我需要訪問global.asax.cs中Session_End事件上的會話變量,但HttpContext.Current爲null,因此不能訪問任何會話變量。Session_End上的asp.net會話變量
一)我可以以某種方式不同的訪問用戶會話,或
b)是否有Session_End中之前任何其他事件突出部分,我可以訪問用戶的會話變量?
我需要訪問global.asax.cs中Session_End事件上的會話變量,但HttpContext.Current爲null,因此不能訪問任何會話變量。Session_End上的asp.net會話變量
一)我可以以某種方式不同的訪問用戶會話,或
b)是否有Session_End中之前任何其他事件突出部分,我可以訪問用戶的會話變量?
HttpContext.Current
不適用於Session_End
,但您可以直接使用this.Session
訪問會話實例。
除非您在會話超時時採取行動的具體目的使用Session_End,否則依靠Session_End並不是一個好主意。
我不相信有任何可靠的方法來捕捉用戶的會話結束(例如,當他們關閉瀏覽器時)。
這不一定是正確的。如果您正在使用InProc會話,當會話在[timeoutvalue]分鐘內沒有活動時,將會觸發。如果您正在使用存儲的會話,則不會發生。 – womp 2010-01-08 19:35:52
我認爲依靠session_end將是唯一的方法,如果你需要一個準確的全球活動用戶會話列表 – 2010-01-08 21:53:42
你想做什麼?
只有在Session_End之前沒有可以用來訪問Session對象的事件。
如果您存儲了與上次使用Session對象相關的操作時間戳,然後檢查該時間戳,可以瞭解應該何時結束。
(基於您的IIS設置/配置)。 但是,訪問它的行爲會延長會話對象的使用壽命。
當然,您需要通過使用隱藏的Ajax回發來檢查它,或者通過觸發一個事件或類似的東西。
但我真的不會建議這一點。你想做什麼,你需要這個?
我想保持活動會話的所有用戶的全球列表。因此,我需要在用戶會話結束時清理用戶會話(讓我們考慮一下,用戶沒有註銷,他或她剛剛關閉了瀏覽器),所以我需要從全局哈希表中刪除此用戶,某些會話GUID。據我所知,SessionID對於不同的請求可以不同,所以我不能使用那個 – 2010-01-09 18:29:45
是的。 System.Web.SessionState.HttpSessionState是我應該使用而不是HttpContext.Current。 Thanx – 2010-01-09 19:00:18
真的很滿意,謝謝。 – Bharat 2017-01-23 10:16:17
確實有幫助後見http://stackoverflow.com/questions/12294532/asp-net-values-of-session-variables-in-session-end-event這我懷疑它爲什麼是null。並檢查我是否使用過HttpContext.Current(y – MSTdev 2017-05-03 10:57:54