使用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 protected,(控制器中的[RequireHttps]),它会尝试转到
>https://localhost/Account/LogOn
这是不正确的,因此在404上失败。 如果你手动去
>https://localhost:44300/Account/LogOn
登录页面工作正常。 问题是:当需要https时,如何使事物转到正确的地址?
答案 0 :(得分:1)
使用如下重写标记配置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面板轻松生成。