我有一个只能通过https访问的网站。一切正常,几周前我开始向某些部分添加缓存,所以我的登录操作看起来像这样:
[RequireHttps]
public class AccountController : Controller
{
[OutputCache(CacheProfile = "Long")]
public ActionResult LogOn()
{
return View();
}
...
}
我的web.config身份验证包含:
<forms loginUrl="~/Account/LogOn" timeout="2880" requireSSL="true" protection="All" />
一切似乎仍然可以正常工作,当您访问该网站时,它会将您带到https登录页面,即使您已将其键入http//sitename.com
。最近我注意到ELMAH记录了一堆所请求的资源只能通过SSL访问。用于登录页面,我无法找出原因。
事实证明,在某些情况下,如果您尝试转到需要授权的网页,它会将您转发到http//sitename.com/Account/LogOn?ReturnUrl=%2f
而不是https,但是如果您只是从?ReturnUrl=%2f
页面移除网址并按回车键,它会转到受保护的https//sitename.com/Account/LogOn
。
长话短说,删除[OutputCache(CacheProfile = "Long")]
可以解决问题。 所以我的问题是,为什么缓存该页面会导致页面无法在没有ssl的情况下访问?