首页 文章

ASP.NET 2.0会话超时

提问于
浏览
2

已经有人在此论坛中就会话超时提出了这个问题 . 如果有人能再次澄清这一点,我将不胜感激 .

我有一个asp.net 2.0应用程序,如果用户没有做任何活动并按下页面上的按钮(他被重定向到sessionExpired.aspx页面),则会在15-20分钟后超时 . 我已经在我的web.config文件中将会话超时设置为60分钟,但仍然以某种方式超时用户 .

关于Session Timeout Precedence,我有另外一个与此相关的问题 . IIS会话超时是否优先于ASP.NET会话超时 . 假设IIS会话超时设置为20分钟且ASP.NET会话超时为60分钟,ASP.NET是否覆盖IIS会话超时 .

1 回答

  • 3

    IIS优先,但它们处理略有不同的场景 .

    对于IIS,应用程序池的默认20分钟超时是指传入请求 . 如果您的应用程序在20分钟内没有收到任何请求,则应用程序池将进入休眠状态以节省资源 . 发生这种情况时,应用程序中的所有会话都将消失 .

    ASP.NET会话超时处理每会话请求 . 您的站点可能非常繁忙,但如果一个用户(即会话)在20分钟内未处于活动状态,则只会丢弃该会话 .

    所以,是的,要确保会话保持活动60分钟,您必须更改IIS应用程序池以及web.config的超时设置 .

    解决此问题的另一种方法是周期性地向服务器发送小的AJAX“ping”(即具有随机ID的页面请求以防止浏览器缓存) . 这样,只要用户不关闭浏览器,就会保留会话 .

相关问题