已经有人在本论坛中提出了有关会话超时的问题。如果有人能再次澄清这一点,我将不胜感激。
我有一个 asp.net 2.0 应用程序,如果用户没有执行任何活动并按下页面上的按钮(他被重定向到 sessionExpired.aspx 页面),那么 15-20 分钟后就会超时。我已在 web.config 文件中将会话超时设置为 60 分钟,但用户仍然超时。
我还有另一个与会话超时优先级相关的问题。 IIS 会话超时是否优先于 ASP.NET 会话超时。假设如果 IIS 会话超时设置为 20 分钟,而 ASP.NET 会话超时设置为 60 分钟,则 ASP.NET 是否会覆盖 IIS 会话超时。
IIS 优先,但它们处理的情况略有不同。
对于 IIS,应用程序池默认的 20 分钟超时是指传入请求。如果您的应用程序在 20 分钟内没有收到任何请求,则应用程序池将进入睡眠状态以节省资源。发生这种情况时,应用程序中的所有会话都会消失。
ASP.NET 会话超时处理每个会话的请求。您的站点可能非常繁忙,但如果一个用户(即会话)在 20 分钟内不活动,则只会丢弃该会话。
所以,是的,要确保会话保持活动状态 60 分钟,您必须更改 IIS 应用程序池以及 web.config 的超时设置。
解决此问题的另一种方法是定期向服务器发送一个小型 AJAX“ping”(即带有随机 ID 的页面请求,以防止浏览器缓存)。这样,只要用户不关闭浏览器,会话就会被保留。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)