我已经读过asp.net会话变量默认最后20分钟的非活动浏览器。
如果用户退出并立即登录,会发生什么?或关闭浏览器并重新启动它?会话状态“死亡”? 如果没有 - 在evey注销或浏览器关闭时死亡的替代方法是什么?
由于
答案 0 :(得分:2)
会话是否仍然有效取决于两件事:
会话cookie作为非持久性cookie提供,这意味着它们应由浏览器维护一个会话(浏览器),因此在关闭浏览器并重新启动后不应发送它们。但实际上,完全取决于客户端浏览器的实现。
这里的教训:是的,当普通用户关闭浏览器时,会话过期。但你不能也不应该依赖它来做任何重要事情。
答案 1 :(得分:2)
会话状态完全依赖于浏览器为“会话”中的每个请求提供的cookie。当服务器在每个请求上接收到cookie时,它会检查自上次请求以来是否已经过了默认的20分钟。
因此,您的问题的答案:
如果用户退出,会发生什么 立即登录?
服务器在注销时将cookie标记为无效,并在他们重新登录时为其分配一个全新的
或关闭浏览器并重新启动它?
如果会话未到期,则不会产生任何差异(因为浏览器仍会随着每个请求一起发送cookie)
让它在evey注销或浏览器上死亡 闭?
尽管您可以将过期日期设置为过去,但您无法让Cookie“死”。您无法检测到用户关闭浏览器。
答案 2 :(得分:1)
会话在“20分钟不活动”(默认情况下)后“死亡”,或者如果程序员已将其清除。
要清除会话,请在其上调用Abandon
方法。在退出时这样做。
没有简单的方法来检测浏览器窗口是否已关闭(例如,您可以使用Ajax从浏览器轮询),因为Web是无状态的。但是,如果发生这种情况(并且没有其他浏览器实例仍然打开),当用户启动新实例并访问您的网站时,他将获得一个新会话(尽管现有会话将一直持续到超时)。
答案 3 :(得分:1)
注销时,您可能需要手动清除会话。 新的浏览器实例应该有新的会话。
答案 4 :(得分:1)
Session.Abandon()将刷新您的所有会话。用户注销时调用此方法。因此,每次登出并登录时,都会创建新会话。会话TimeOut和关闭浏览器将在下次自动生成新会话。
答案 5 :(得分:0)
我假设您希望用户注销 - 您希望销毁会话,而不仅仅是要移除的会话密钥/值对。
通话:
Session.Abandon();
会破坏会话。 http://msdn.microsoft.com/en-us/library/ms524310(v=vs.90).aspx