web-dev-qa-db-fra.com

Request.Url.GetLeftPart (UriPartial.Authority) renvoie http sur le site https

Nous utilisons Request.Url.GetLeftPart(UriPartial.Authority) pour obtenir la partie domaine du site. Cela répondait à nos besoins sur http. . Nous avons récemment remplacé le site par https (il y a environ 3 jours), mais cela est toujours renvoyé par http: // .. barre d'adresse.

Une idée pourquoi cela se produit?

12
kapz

L'exemple suivant fonctionne correctement et renvoie une chaîne contenant "https":

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

Vous avez soit un problème avec la classe HttpContext ici, soit toutes vos demandes utilisent encore http :

  1. Vous pouvez vérifier la propriété de demandes HttpContext.Current.Request.IsSecureConnection. Si c'est vrai et que la méthode GetLeftPart renvoie toujours http pour vous, je pense que vous ne pourrez pas remplacer un remplaçant ici.
  2. Si toutes vos demandes arrivent vraiment avec http , vous pouvez imposer une connexion sécurisée dans IIS.

Vous devez également inspecter l'URL entrante et la consigner quelque part à des fins de débogage.

19
Herdo

Si votre demande provient de ARR avec déchargement SSL, Request.Url.GetLeftPart(UriPartial.Authority) récupère simplement http

1
heavenwing

Cela peut aussi arriver avec un équilibreur de charge. Dans une situation sur laquelle j'ai travaillé, toutes les demandes https étaient converties en http par l'équilibreur de charge. Il est toujours indiqué https dans la barre d'adresse du navigateur, mais en interne, il s'agit d'une requête http. L'appel côté serveur que vous appelez à GetLeftPart() renvoie donc http.

0
Greg