2011-09-02 117 views
3

我有一个使用会话变量的asp.net webapplicatoin。我在session_end被触发时清除会话值,但是在关闭前一个窗口后在新窗口中打开应用程序时,会话值保留。asp.net中的会话变量

有没有一种方法可以摆脱会话值。

在此先感谢... Phani

+1

我建议尽快清除会话值,而不是等待session_end(可能会或可能不会触发)。 –

+0

session_start被“保证”触发,但不幸的是session_end不是,所以不要依赖它。你可以使用注销事件吗? – Michel

+0

感谢您的回复,Brian和Michel。不幸的是,我没有注销选项,我无法清除会话值,因为它们在整个应用程序中都被使用。欢迎任何其他建议... –

回答

0

窗口/标签没有创建新的会话,新浏览器实例做的。

另外,当会话结束时,会话变量不见了。您无法控制GC何时从内存中删除它们,但它们不再可访问。

0

只需关闭窗口,会话就不会结束。会话到期时结束。 ASP.NET无法知道用户是否关闭了该窗口。请参阅MSDN on SessionStateModule.End Event

请参阅this answer以获得更全面的解释。

在我的头顶,你可以做的是检测用户何时关闭窗口,例如在jQuery中使用unload()事件,并向web服务发送请求,然后结束会话。