ASP.NET会话超时行为

时间:2015-05-21 11:08:33

标签: c# asp.net vb.net session-timeout

我在代码中使用Session对象来存储将保存到DB的用户登录。

我想确定会话超时的行为。

如果会话超时,用户可以做什么?我想浏览到不同的页面不会恢复会话?所以唯一的选择就是关闭所有的浏览器并重新进入并且Session活跃起来了吗?

我想知道Session在什么条件下不会再活着。

会话超时也会触发global.aspx中的Session_End吗?

4 个答案:

答案 0 :(得分:2)

  

只要继续请求,会话就被视为活动   具有相同的SessionID值。如果请求之间的时间   特定会话超过指定的超时值(以分钟为单位),   该会话被视为已过期。 Reference

我相信您正在检查用户是否在每个页面(或母版页)中登录,因此只要用户没有空闲并且他正在使用系统,会话就会更新,不用担心。 如果用户长时间闲置且会话已过期,则出于安全原因让他再次登录是合乎逻辑的。

答案 1 :(得分:0)

在退出时使用此功能:

Session.Remove( “SESSIONNAME”);

答案 2 :(得分:0)

我相信你没有通过在Session_End事件中调用会话对象上的Abandon方法来显式杀死会话。

退出会话会激活此事件。显然,在尝试在页面之间进行导航时,必须将用户带到登录页面。

答案 3 :(得分:0)

使用会话存储经过验证的用户的详细信息非常常见。会话在一段时间不活动后超时(我相信它默认为20分钟,但可以在web.config中更改。)这通常是可取的,因为如果用户放弃网站(或离开他们的计算机)如果没有注销,它将终止(最终)会话并自动将其自动注销。

读取或写入会话将重置超时倒计时。因此,如果每个网页都检查用户是否已登录,如果在20分钟内查看新页面并且他们不会被注销,则需要执行所有操作。

如果用户退出(或会话超时),他们不需要关闭浏览器,只需返回登录页面并再次登录即可。因此,对于每个应该受到保护的页面,检查它们的会话是否存在并登录,或者将它们重定向到登录页面。

是会话超时会触发session_end事件。