Request.Url.GetLeftPart(UriPartial.Authority)在https网站上返回http

时间:2014-06-03 06:45:35

标签: c# http https httpcontext

我们使用Request.Url.GetLeftPart(UriPartial.Authority)来获取网站的域名部分。这满足了我们对http的要求。 我们最近将网站更改为https(大约3天前),但仍然会返回http:// .. 网址全部更改为https并显示在浏览器地址栏中。

知道为什么会这样吗?

3 个答案:

答案 0 :(得分:20)

以下示例正常工作并返回带有“https”的字符串:

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

您在此处遇到HttpContext课程的问题,或者您的所有请求仍在使用 http

  1. 您可以查看请求HttpContext.Current.Request.IsSecureConnection属性。如果确实如此,并且GetLeftPart方法仍然为您返回 http ,我认为您不会在这里替换它。
  2. 如果您的所有请求都是 http ,那么您可以在IIS中强制实施安全连接。
  3. 您还应检查传入的URL并将其记录在某处以进行调试。

答案 1 :(得分:1)

如果您的请求来自带有SSL卸载的ARR, Request.Url.GetLeftPart(UriPartial.Authority)只需获取http

答案 2 :(得分:0)

在处理负载均衡器时也会发生这种情况。在一种情况下,负载平衡器将所有https请求都转换为http。在浏览器地址栏中仍然显示https,但是在内部它是一个http请求,因此您对GetLeftPart()进行的服务器端调用返回http。