我在ASP.NET MVC 3应用程序中使用SSL。一旦用户进入HTTPS模式,页面中的所有链接都将使用HTTPS前言生成,但我想“让用户离开”HTTPS模式,并在已经进行关键信息交换时返回HTTP完成。
路由配置中是否还有其他类似的内容:
/Home/Index will be always HTTP
我试过了:
<a href="@Url.Action("Index","Home",null,"http")">Normal</a>
但是当我使用自定义端口时它失败了。我的意思是,在开头它是:http://127.0.0.1:5104/Home/Index
但是当从HTTPS生成链接时,它看起来是http://127.0.0.1/Home/Index
,当然它不起作用
问候。
答案 0 :(得分:1)
当用户正在浏览HTTPS页面时,请求本身不包含有关运行HTTP绑定的端口的任何信息。这意味着您需要自己提供它(有可能以某种方式从IIS配置文件中获取此值)。
下面是一个示例帮助程序函数,它允许您指定请求应路由到哪个http端口。
public static string HttpAction(this UrlHelper helper, string action,
string controller, object routeValues, int port)
{
var url = helper.Action(action, controller, routeValues, "http");
var uri = new Uri(url);
var builder = new UriBuilder(uri.Scheme, uri.Host, port, uri.AbsolutePath, uri.Query);
return builder.ToString();
}
用法:
@Url.HttpAction("index", "account", new { val = 5 }, 5055);