我们使用Request.Url.GetLeftPart(UriPartial.Authority)
来获取网站的域名部分。这满足了我们对http的要求。
我们最近将网站更改为https(大约3天前),但仍然会返回http:// ..
网址全部更改为https并显示在浏览器地址栏中。
知道为什么会这样吗?
答案 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 :
HttpContext.Current.Request.IsSecureConnection
属性。如果确实如此,并且GetLeftPart
方法仍然为您返回 http ,我认为您不会在这里替换它。您还应检查传入的URL并将其记录在某处以进行调试。
答案 1 :(得分:1)
如果您的请求来自带有SSL卸载的ARR,
Request.Url.GetLeftPart(UriPartial.Authority)
只需获取http
答案 2 :(得分:0)
在处理负载均衡器时也会发生这种情况。在一种情况下,负载平衡器将所有https请求都转换为http。在浏览器地址栏中仍然显示https,但是在内部它是一个http请求,因此您对GetLeftPart()
进行的服务器端调用返回http。