ASP.Net MVC尽可能长时间保持会话活动

时间:2012-12-08 15:47:29

标签: asp.net-mvc-3 session-timeout

我们使用MVC 3构建了一个ASP.Net Web应用程序。我们在web.config中配置了会话超时(我们使用表单基本身份验证) -

<forms loginUrl="~/Common/Login" path="/" protection="All" timeout="180" requireSSL="false" slidingExpiration="true" defaultUrl="~/Common/Login" cookieless="UseDeviceProfile" enableCrossAppRedirects="false" />

事情一直很好但在我们上线后,员工开始像使用典型的Windows应用程序一样使用它。 “登录”一次并保持Web应用程序页面打开,直到它们工作,有时甚至超过几小时的ciuple。 Web应用程序具有典型的回发页面以及基于AJAX的部分和文件上载。

最近对用户活动日志的一些调试和审核表明,这导致了一些意外的回发和服务端处理。

您建议让会话保持活跃多长时间?我们还将imp数据存储在服务器端会话对象上。定期页面刷新可以解决吗?

1 个答案:

答案 0 :(得分:1)

表单身份验证票证有效性和ASP.NET会话有效性之间存在差异。那些是完全无关的两件事。您在问题中显示的是表单身份验证票证的有效性,您已设置为180分钟且滑动到期。

  

您建议让会话保持活跃多长时间?

ASP.NET会话(如果您使用任何)和表单身份验证票证超时都应设置为相同的值。无论是长时间保持会话活动还是对服务器执行定期ping操作以保持会话处于活动状态都是完全相同的。因此,您最好将超时设置为足够高的值,而不是通过定期请求来淹没您的服务器。

这就是说,如果您正在使用ASP.NET Session,并且您正在存储此会话InProc,您应该知道Web服务器可以随时决定回收您的应用程序。例如,如果达到某些CPU /内存阈值,则可能发生这种情况。发生这种情况时,如果您将会话存储在内存中,无论您设置超时值多长时间,都会丢失所有信息。在这种情况下,您应该考虑使用进程外分布式会话存储。

相关问题