2011-09-02 118 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服務發送請求,然後結束會話。