Response.IsAuthenticated在30秒后失败

时间:2012-09-10 13:38:58

标签: asp.net-mvc forms-authentication

我将ASP.NET MVC3应用程序部署到共享主机服务。它使用FormsAuthentication和SSL:

<authentication mode="Forms">
  <forms loginUrl="~/Home/Index" timeout="240" requireSSL="true" />
</authentication>

问题出在一些Razor(部分)视图中:我对一个控制器方法执行回调,为了测试,它只是睡眠并返回一个PartialView。我的问题围绕着Response.IsAuthenticated。在回调和睡眠之前确实如此,只要睡眠时间为30秒或更短,它就会保持为真。但是,我用各种较长的持续时间(例如55秒)测试了它,并且在这些情况下,Response.IsAuthenticated变为false。这是一个问题,因为在我的原始代码中,我需要进行重定向(通过JS,open.window,在我的部分视图中)。由于Response.IsAuthenticated为false,FluentSecurity立即将用户发送到loginUrl(我不想要)。

这似乎与某处的超时(“KeepAlive”,“ServerTimeout”?)有关,但我已经用Google搜索了响应。验证了超时并且没有任何结果。坦率地说,这种行为似乎发生在整个站点:如果用户离开页面(我使用FF)超过一分钟左右,那么当他们尝试访问页面时,他们会自动被重定向到loginURL。请注意,我的会话超时设置为“120”。有趣的是,当应用程序部署到Windows Azure时,我没有遇到过这种情况(但是还有其他问题);当我换到另一个主机时,它才刚刚开始发生。

任何有关此主题信息的指示都将不胜感激。

1 个答案:

答案 0 :(得分:3)

当闲置几秒钟时,主机可能正在服务器中杀死AppPool。

您记录应用程序ShutDown事件以查看是否属于这种情况:http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx