1

我们有一个使用 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 应用程序页面打开直到它们工作,有时超过几个小时。该网络应用程序具有典型的回发页面以及基于 AJAX 的部分和文件上传。

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

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

4

1 回答 1

1

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

您建议将会话保持多长时间?

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

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

于 2012-12-08T16:13:38.047 回答