Response.IsAuthenticated在30秒后错误

问题描述:

我有一个ASP.NET MVC3应用程序部署到共享主机服务。它使用FormsAuthentication和SSL:Response.IsAuthenticated在30秒后错误

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

的问题是在一些剃刀(局部的)的观点:我执行的回调到,用于测试的目的,简单地睡觉并返回一个PartialView的控制器方法。我的问题围绕Response.IsAuthenticated进行。在回调和睡眠之前,只要睡眠时间为30秒或更短,在事后保持真实。不过,我已经用各种更长的持续时间(例如55秒)对它进行测试,并且在这些情况下Response.IsAuthenticated变为false。这是一个问题,因为在我的原始代码中,我需要做一个重定向(通过JS,open.window,在我的部分视图中)。由于Response.IsAuthenticated是false FluentSecurity立即发送用户到loginUrl(我不想)。

看来这将与某个地方的超时(“KeepAlive”,“ServerTimeout”?)有关,但我已经谷歌回应response.isauthenticated超时,并没有任何东西。坦率地说,这种行为似乎是在整个网站中发生的:如果用户离开页面(我使用FF)超过一分钟左右,那么当他们尝试访问页面时,他们会自动被重定向到loginURL。请注意,我的会话超时设置为“120”。有趣的是,当应用程序部署到Windows Azure时,我没有遇到这种行为(虽然还有其他问题);当我切换到不同的主机时,它刚刚开始发生。

任何指向这个主题的信息将不胜感激。

也许主机在闲置几秒钟后正在终止服务器中的AppPool。

您登录应用程序关闭事件,看看是否是这种情况:http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx

+0

没错,就是这样,我不得不切换到不同的托管公司。我的应用程序现在按预期工作。我从来没有发现Azure的问题是什么,但我现在真的不在意我已经离开了它。 –

+0

对不起,重复评论,但感谢您的帖子。 –

+0

@NormanKleinberg确实注意到AppPool将会不时被回收,因此只有很小一部分用户仍然可以获得这个功能。 – eglasius