2014-07-01 279 views
0

當會話過期時,asp.net會在後臺執行什麼操作?會話是否完全處理完畢,或者是否需要在Global.asax的Session_End事件中添加Session.Abandon();會話過期時會發生什麼情況?

+0

確切地說,「丟棄」的意思是什麼?你問是否在會話中的所有對象上調用了IDisposable.Dispose? –

回答

3

內存中狀態 - 從會話列表中刪除對象並調用Session_End。對於SQL會話狀態,由於不匹配(ID +未到期)條件,因此沒有任何事情發生,並且數據將不再返回具有相同會話ID的未來請求。

您不需要在Session_End中調用Session.Abandon(),因爲會話過期時調用該事件(這正是Abandon所做的)。

注意

使用了進程外會話狀態(SQL狀態服務)將不會收到 Session_End事件,因爲外OUF進程狀態不火嘛
  • 正常的Web應用程序。
  • 如果您需要清理SQL會話狀態,則可以運行clenaup任務來刪除過期會話的行。
1

會話完全處置。你不需要做任何特別的事情。 Session_End是一個讓你在會話處理時做事的事件。

Session.Abandon()是一個讓您隨意終止會話的命令。

注意:如果您沒有在Session中放置任何變量,那麼Session_End將不會觸發。

+1

請注意,此答案明確談論了進程內會話狀態。 –

1

如果您使用inproc會話提供程序,會話將被清除,因此您不需要撥打Session.Abandon()

相關問題