【问题标题】:Force http page on ASP.NET MVC IIS在 ASP.NET MVC IIS 上强制 http 页面
【发布时间】:2016-06-11 04:02:39
【问题描述】:

我有一个主要在 https 中运行的网站。我有几个页面必须与必须在 http 中运行的硬件交互。我正在使用 ActionLink 的覆盖来指定 http 协议。我在浏览器控制台中看到 http 作为链接。

@Html.ActionLink("Set Up WiFi", "setupWiFi", "Utility", "http", null, null, null, null)

问题(可能是 IIS 8.5)是链接不断出现 https。

【问题讨论】:

    标签: asp.net asp.net-mvc iis


    【解决方案1】:

    您无法使用常用的 HtmlHelper 扩展方法执行此类操作,但您可以使用与 HtmlHelper ActionLink 扩展方法相同的链接生成框架。在幕后,ActionLink 使用名为 GenerateLink 的静态方法,确实允许您提供协议名称:

    public static string GenerateLink(RequestContext requestContext, RouteCollection routeCollection, string linkText, string routeName, string actionName, string controllerName, string protocol, string hostName, string fragment, RouteValueDictionary routeValues, IDictionary<string, object> htmlAttributes)
    

    因此,使用此方法(它发出一个字符串)加上 HtmlHelper 类使用 Raw 方法发出原始 HTML 的能力,您可以编写覆盖的链接:

    @Html.Raw(HtmlHelper.GenerateLink(
      ViewContext.RequestContext, 
      Html.RouteCollection, 
      "My Link Text Here", null, 
      "ActionNameHere", 
      "ControllerNameHere", 
      "http", 
      null, 
      null, 
      null, 
      null))
    

    【讨论】:

      【解决方案2】:

      我发现以前的程序员在 Global.asax.cs 文件中的 Application_PreRequestHandlerExecute 方法中实现了 URL 重写例程。它正在获取所有 URL 并将它们重写为 https。

      @Andy Hopper 原始的@Html.ActionLink("Set Up WiFi", "setupWiFi", "Utility", "http", null, null, null, null) 生成正确的 http:// 链接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-22
        • 2016-07-28
        • 2019-10-01
        • 1970-01-01
        • 2018-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多