我的azure云服务在配置文件中启用了http和https。 我尝试在web.config中添加此规则
<rule name="RedirectHTTPToHTTPS" stopProcessing="true">
<match url="(.*)" ignoreCase="true" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
如果我使用http://mysite.kom,则会正确地重定向到https://mysite.kom
但如果我输入http://mysite.kom/other/default.aspx,则会重定向到 http://mysite.kom/other/default.aspx 而不是 https://mysite.kom/other/default.aspx < / p>
我在我的application_start事件中添加了GlobalFilters.Filters.Add(new RequireHttpsAttribute());
。但仍然“http://mysite.kom/other/default.aspx”未被重定向到“ https: // mysite。柑/其他/ Default.aspx的“
我在stackoverflow中尝试了所有类似的问题。我甚至将此规则移到了规则配置的顶部。任何使这项工作的建议
答案 0 :(得分:0)
为了解决这个问题,我添加了
if (!HttpContext.Current.Request.IsSecureConnection && !HttpContext.Current.Request.Url.Host.Contains("localhost"))
{
Response.Redirect("https://" + Request.ServerVariables["HTTP_HOST"]
+ HttpContext.Current.Request.RawUrl);
}
到我的global.asax.cs文件中的Application_BeginRequest事件
答案 1 :(得分:0)
以下是我使用的内容:
<rewrite>
<rules>
<rule name="redirect HTTP to HTTPS" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
<add input="{WARMUP_REQUEST}" pattern="1" negate="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
虽然您没有保留查询字符串,但看起来您仍然拥有获取http-&gt; https重定向所需的一切。这让我想知道浏览器缓存是否会导致您出现问题?我之前遇到过这个问题我不认为它有效,因为我在启用http-&gt; https重定向之前访问了网站,结果发现它是我的浏览器从缓存中提供页面。
我将它包装在网站扩展中,它使用上面的重写规则,所以我知道它有效: http://www.siteextensions.net/packages/RedirectHttpToHttps/