我有一个使用会话变量的asp.net webapplicatoin。我在session_end被触发时清除会话值,但是在关闭前一个窗口后在新窗口中打开应用程序时,会话值保留。asp.net中的会话变量
有没有一种方法可以摆脱会话值。
在此先感谢... Phani
我有一个使用会话变量的asp.net webapplicatoin。我在session_end被触发时清除会话值,但是在关闭前一个窗口后在新窗口中打开应用程序时,会话值保留。asp.net中的会话变量
有没有一种方法可以摆脱会话值。
在此先感谢... Phani
新窗口/标签没有创建新的会话,新浏览器实例做的。
另外,当会话结束时,会话变量不见了。您无法控制GC何时从内存中删除它们,但它们不再可访问。
只需关闭窗口,会话就不会结束。会话到期时结束。 ASP.NET无法知道用户是否关闭了该窗口。请参阅MSDN on SessionStateModule.End Event
请参阅this answer以获得更全面的解释。
在我的头顶,你可以做的是检测用户何时关闭窗口,例如在jQuery中使用unload()事件,并向web服务发送请求,然后结束会话。
我建议尽快清除会话值,而不是等待session_end(可能会或可能不会触发)。 –
session_start被“保证”触发,但不幸的是session_end不是,所以不要依赖它。你可以使用注销事件吗? – Michel
感谢您的回复,Brian和Michel。不幸的是,我没有注销选项,我无法清除会话值,因为它们在整个应用程序中都被使用。欢迎任何其他建议... –