我正在使用本地服务器,我需要通过HTTPS访问特定的URL,而其余的则通过HTTP访问。我已将Visual Studio配置为使用IIS Express,因此我可以使用HTTP / SSL。
我有一个像这样的方法:
[RequireHttps]
public ActionResult SomeHttpsMethod()
{
//Do something
}
在另一个地方我有:
var url = Url.Action("SomeHttpsMethod", "SomeHttpsController", new { someParams }, Request.Url.Scheme);
如果我使用HTTP
即http://localhost:httpport
访问我的网站,我仍然会从HTTP
而不是Request.Url.Scheme
返回HTTPS
。它是如何工作的?
显然,如果我使用HTTPS
访问我的网站,即以https://localhost:sslport
开头,则返回HTTPS
(这是我想要的)但我不想访问HTTPS
中的网站,仅适用于特定的网址/控制器方法。
答案 0 :(得分:5)
这一行:
var url = Url.Action("SomeHttpsMethod", "SomeHttpsController",
new { someParams }, Request.Url.Scheme);
根据您的当前请求的方案构建URL,即HTTP。 Request
始终引用当前请求。
你最好不要硬编码" https"在这个地方,因为你总是希望它是安全的:
var url = Url.Action("SomeHttpsMethod", "SomeHttpsController",
new { someParams }, "https");
答案 1 :(得分:0)
在我的情况下,严重的是在ARR服务器上设置了规则。如果您获得HTTP而不是HTTPS,那么只需要看一下。