为什么Request.Url.Scheme不返回HTTPS?

Kev*_*Lee 6 c# asp.net-mvc ssl https

我正在使用本地服务器,我需要通过HTTPS访问特定的URL,其余的通过HTTP访问.我已将Visual Studio配置为使用IIS Express,因此我可以使用HTTP/SSL.

我有一个像这样的方法:

[RequireHttps]
public ActionResult SomeHttpsMethod()
{
     //Do something
}
Run Code Online (Sandbox Code Playgroud)

在另一个地方我:

var url = Url.Action("SomeHttpsMethod", "SomeHttpsController", new { someParams }, Request.Url.Scheme);
Run Code Online (Sandbox Code Playgroud)

如果我使用访问我的网站HTTP也就是http://localhost:httpport,我仍然可以HTTP从返回Request.Url.Scheme代替HTTPS.它是如何工作的?

显然,如果我使用HTTPSie来访问我的网站ie https://localhost:sslport,HTTPS则返回(这是我想要的)但我不想访问该网站HTTPS,仅针对该特定的URL /控制器方法.

Han*_*ney 6

这一行:

var url = Url.Action("SomeHttpsMethod", "SomeHttpsController", 
    new { someParams }, Request.Url.Scheme);
Run Code Online (Sandbox Code Playgroud)

根据您当前的请求方案构建URL ,即HTTP.Request总是指当前的请求.

你最好在这个地方硬编码"https",因为你总是希望它是安全的:

var url = Url.Action("SomeHttpsMethod", "SomeHttpsController", 
    new { someParams }, "https");
Run Code Online (Sandbox Code Playgroud)