Request オブジェクトからホストを取得する必要があります。どのプロパティを使用すればよいですか。また、その理由は何ですか。
MSDN より:
Uri.DnsSafeHost プロパティ
DNS 解決に適した URI のエスケープされていないホスト部分を含む文字列。または、すでに解決に適している場合は、元のエスケープされていないホスト文字列。
対
Uri.Host プロパティ
ホスト名を含む文字列。これは通常、サーバーの DNS ホスト名または IP アドレスです。
私のテストは ASP.NET 開発サーバーで行いました。これらは両方とも常に を返しますlocalhost
。127.0.0.1 を入力しても、両方とも を返しますlocalhost
。
読み進めると、このプロパティは IPv6 アドレスを処理し、必要に応じて Unicode から ASCII への変換も行います。また、IRI と IDN も考慮できます。現時点ではこれらのことは気にしていませんが、安全のためにDnsSafeHost
このプロパティを使用するだけでよいのでしょうか?DnsSafeHost
ベストアンサー1
適用するDnsSafeホスト結果のホスト名を自分でDNSサーバーに送信する場合は、URLに を追加します。DNSはもともとASCIIのみのプロトコルでした(そしてASCIIのサブセット)。現在の URL では、URL のホスト部分に、DNS サーバーに直接送信できない文字シーケンスが許可されています。例:
括弧で囲まれた IPv6 アドレス. DnsSafeHost は括弧を削除します。
非ASCII、非英語ドメイン名。DnsSafeHost(オプション)はRFC 3987 IRIB の仕様文字を正規化し、非ASCII文字をインド、プニコードエンコーディング。
将来、どのような URL が許可されるかは誰にもわかりません。アプリケーションは、URL で何が許容されるかという私たちの想定よりも長く存続する可能性があります。DnsSafeHost は、そこにある程度の回復力を追加します。
ユーザーにホスト名を表示する必要がある場合は、ホスト代わりにプロパティを使用します。