絶対的なURLをASPで生成する方法.ネットコア


URLはウェブをウェブにするものです.ASP .ネットコアコントローラ、かみそりページ、およびレイザービューは、あるUrl にアクセスできるプロパティUrlHelper . 使用UrlHelper あなたはMVCのアクション、ページ、ルートにURLを生成することができます.このCの式を見てみましょう.
Url.Action(action: "Home", controller: "Privacy")
この式の結果は、Privacy アクションオンザHomeController : "/Home/Privacy" .
これは絶対パスだけですが、それは有効なURLです.ただし、スキーム、ホスト名、ドメイン名、ポートを含む絶対URLを取得したい場合もあります.この目的のためにUrlHelper を指定するprotocol どちらが計画ですかhost これはホスト名かドメイン名です.このCの式を見てみましょう.
Url.Action(action: "Home", controller: "Privacy", values: null, protocol: "https", host: "your-website")
プロトコルとホストを指定することによって"https://your-website/Home/Privacy" .
しかし、あなたがそれを省略するならhost パラメータですがprotocol パラメータはまだ絶対URLです.host パラメータは現在のHTTPリクエストに使用されるホストに対してデフォルトとなります.
Url.Action(action: "Home", controller: "Privacy", values: null, protocol: "https")
結果は次のようになります"https://localhost:7184/Home/Privacy" . このHTTPリクエストを使用するホストとポートは、このURLを生成するために使用されます.
ASP . NETでHTTPリクエストを処理している場合.NETコア、また、Scheme プロパティHttpRequest , それで、あなたはその計画をprotocol 現在のHTTPリクエストと同じスキームとホストを持つURLを生成するパラメータです.
Url.Action(action: "Privacy", controller: "Home", values: null, protocol: Request.Scheme)
また、Request.Host としてhost パラメータを指定すると、現在のHTTPリクエストからホストを使用している必要はありませんprotocol を指定せずにhost パラメータ
どのような場合にアクセスする必要はありませんUrlHelper または、あなたはその方法でURLを構築する必要がありますUrlHelper サポートしませんか?
また、現在のHTTPリクエストの絶対ベースURLを作成することもできますHttpRequest . 次のコードは絶対パスの絶対URLをビルドします.
$"{Request.Scheme}://{Request.Host}{Request.PathBase}/your/custom/path"
この式の結果は"https://localhost:7184/your/custom/path" .
現在の絶対パスを含む完全な絶対URLを必要とする場合は、以下のCの式を使用できます.
$"{Request.Scheme}://{Request.Host}{Request.PathBase}{Request.Path}"
何がHTTPリクエストがない場合は?
あなたのコードで処理しているHTTPリクエストがない場合は、BackgroundWorker , あなたはスキームを取得し、いくつかの他の方法をホストする必要があります.あなたの設定にあなたの希望のスキームとホストを格納したり、単一のプロパティで一緒に組み合わせることができますし、設定に格納します.一度設定、構成からそれを抽出し、絶対URLを構築するために使用します.

結論


デフォルトではUrlHelper メソッドは絶対的な絶対パスを生成します.絶対パスは、絶対パスと同じではありません.しかし、UrlHelper メソッドは、完全な絶対URLを生成できるようなオーバーロードを含みます.
また、手動で絶対URLを使用してビルドすることができますHttpRequest プロパティや、指定したスキームとホスト名を設定から保存してから取り出します.
ほとんどの場合、絶対パスを使用して、それはあなたのHTMLにいくつかの文字を保存しますが、絶対的なURLは、技術的なSEOや社会的なメタタグのように時々必要です.