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