Request.Url.GetLeftPart(UriPartial.Authority)
を使用して、サイトのドメイン部分を取得します。これにより、httpでの要件が満たされました。最近サイトをhttpsに変更しましたが(約3日前)、これはまだhttp://で戻ります。URLはすべてhttpsに変更され、ブラウザのアドレスバーに表示されました。
なぜこれが起こるのか?
次の例は正常に動作し、「https」の文字列を返します。
var uri = new Uri("https://www.google.com/?q=102njgn24gk24ng2k");
var authority = uri.GetLeftPart(UriPartial.Authority);
// authority => "https://www.google.com"
ここのHttpContext
クラスに問題があるか、すべてのリクエストがまだhttpを使用しています:
HttpContext.Current.Request.IsSecureConnection
プロパティ。それがtrueであり、GetLeftPart
メソッドがhttpを返す場合、ここでの置き換えは回避できないと思います。また、着信URLを検査し、デバッグのためにどこかに記録する必要があります。
SSLオフロードを使用したARRからのリクエストの場合、Request.Url.GetLeftPart(UriPartial.Authority)
はhttpを取得するだけです
これは、ロードバランサーを処理するときにも発生する可能性があります。私が取り組んだ1つの状況では、すべてのhttpsリクエストがロードバランサーによってhttpに変換されました。ブラウザーのアドレスバーにはまだhttpsと表示されていますが、内部的にはhttpリクエストであるため、GetLeftPart()
に対するサーバー側の呼び出しはhttpを返します。