web-dev-qa-db-de.com

Request.Url.GetLeftPart (UriPartial.Authority) gibt http auf der https-Site zurück

Wir verwenden Request.Url.GetLeftPart(UriPartial.Authority), um die Domain als Teil der Site zu erhalten. Dies entsprach unserer Anforderung an http. . Wir haben vor kurzem die Website in https geändert (vor etwa 3 Tagen), aber dies wird immer noch mit http: // .. Angezeigt. URLs wurden alle in https geändert und im Browser angezeigt Adressleiste.

Irgendeine Idee, warum das passiert?

12
kapz

Das folgende Beispiel funktioniert gut und gibt eine Zeichenfolge mit "https" zurück:

var uri = new Uri("https://www.google.com/?q=102njgn24gk24ng2k");
var authority = uri.GetLeftPart(UriPartial.Authority);
// authority => "https://www.google.com"

Sie haben hier entweder ein Problem mit der HttpContext-Klasse, oder alle Ihre Anforderungen verwenden immer noch http :

  1. Sie können die HttpContext.Current.Request.IsSecureConnection-Eigenschaft der Anforderungen überprüfen. Wenn es wahr ist und die GetLeftPart-Methode für Sie immer noch http zurückgibt, denke ich, dass Sie hier kein Ersetzen finden.
  2. Wenn alle Ihre Anforderungen wirklich mit http verbunden sind, können Sie eine sichere Verbindung in IIS erzwingen.

Sie sollten auch die eingehende URL überprüfen und zum Zweck der Fehlerbehebung irgendwo protokollieren.

19
Herdo

Wenn Ihre Anfrage von ARR mit SSL-Offloading kommt, erhalten Sie Request.Url.GetLeftPart(UriPartial.Authority) einfach http

1
heavenwing

Dies kann auch beim Umgang mit einem Lastverteiler passieren. In einer Situation, an der ich gearbeitet habe, wurden alle https-Anforderungen vom Load Balancer in http konvertiert. In der Adresszeile des Browsers wird immer noch "https" angezeigt. Intern handelt es sich jedoch um eine http-Anforderung. Der serverseitige Aufruf, den Sie an GetLeftPart() richten, gibt http zurück.

0
Greg