在web.config中,我将sessionState中的超时设置为20分钟。根据MSDN的说法,这个超时指定了会话在被放弃之前可以空闲的分钟数。在IIS 7中,DefaultWebSite->会话状态->Cookie设置->超时自动填充为web.config中设置的超时值,在我的情况下为20分钟。此外,应用程序池->DefaultAppPool->高级设置->idleTimeout,我将其设置为10分钟。
然后我做了两个测试:第一次测试:我在下午3:45登录了我的网络应用程序,空闲了10分钟。下午3点55分,我试图使用我的应用程序,但被踢了出去。我认为idleTimeout起了作用。
第二次测试:我在下午4:00登录我的网络应用程序,在下午4:05、4:10、4:15和4:20玩该应用程序。我预计下午4点20分会被踢出球场。但我不是。我认为IIS 7中的会话状态超时(20min)是指在Web代理要求用户重新身份验证之前,用户会话可以处于活动状态的最长时间。从这次测试来看,显然不是。有人能向我解释一下吗?另外,我该如何设置上述情况的超时?
会话超时是一种滑动超时,用户每次访问服务器时都会重置为配置值。
如果在这段时间内没有对应用程序的请求,则应用程序空闲超时将生效。
因此,通常的情况是:
时间 | 用户A | 用户B | 会话状态 |
---|---|---|---|
12:00 |
访问次数第1页 | A: 新会话,超时:20分钟 | |
12:02 |
访问第2页 | A: 超时复位:20分钟 | |
12:10 |
访问次数第1页 | A: 超时:12分钟;B: 新增:20分钟 | |
12:15 |
访问第2页 | A: 超时:07分钟;B: 超时:20分钟 | |
12:22 |
A: 超时;B: 剩余13分钟 | ||
12:32 |
应用程序关闭(达到空闲时间) | ||
12:35 |
访问第3页 | A: 新会话开始 |