1

使用 vs2012、.net 4.5、mvc4。我的项目有部分在 ssl 下。我在 IIS Express 下运行我的项目。在项目属性中:

>SSL Enabled: True
>SSL Url: https://localhost:44300/
>URL: http://localhost:18000/

该项目运行良好。如果您按 F5,浏览器将打开该站点,>http://localhost:18000/ 并且所有常规 (http) 页面都可以正常工作。但是,如果您点击登录页面的链接,例如,它受 ssl 保护(控制器中的 [RequireHttps]),它会尝试转到

>https://localhost/Account/LogOn

这是不正确的,因此在 404 上失败。如果您手动转到

>https://localhost:44300/Account/LogOn 

登录页面工作正常。问题是:当需要 https 时,如何使事物转到正确的地址?

4

1 回答 1

1

使用 rewrite 标记配置您的 web.config 文件,如下所示:

<rewrite>
  <rules>
    <rule name="Secure Account Controller" enabled="true" stopProcessing="true">
      <match url="^account" ignoreCase="true">
        <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
          <add input="{HTTPS}" pattern="off"/>
          <add input="{HTTP_HOST}" pattern="([^/:]*?):[^/]*?"/>
        </conditions>
        <action type="Redirect" url="https://{c:1}:44300{URL}"/>
      </match>
    </rule>
  </rules>
</rewrite>

以上代码可以通过 IIS 面板轻松生成。

于 2013-04-01T17:20:34.763 回答