2009-11-30 63 views
4

如何獲得ASP.NET中所有會話對象的集合? (請注意,我不是在尋找存儲在會話對象中的對象集合,而是所有會話對象本身。)如何獲得ASP.NET中的Session State對象的集合?

這是一個管理頁面,它將列出所有活動會話,並且如果用戶登錄還列出了用戶名等

語言:C# 框架:ASP.NET MVC 1.0(3.5 SP1)

編輯:一對夫婦很好的答案迄今與我曾想過,但沒有提到的解決方案在我原來的問題是添加和刪除session_onStart和session_onEnd中的會話對象。之所以沒有這樣做,是因爲我很難相信Session對象的集合沒有暴露給我們。我猜測ASP.NET將這些會話異常集合存儲在某種類型的集合中,所以我試圖找出如何獲得該集合。我很高興編寫額外的代碼來自己管理它,但我不喜歡創建額外的開銷和代碼來維護這個功能是否已經存在。

+0

你只是在尋找活動登錄用戶列表? – Saar 2009-11-30 15:10:22

+0

活動登錄用戶的列表也很有趣。我怎麼得到這個? – Guy 2009-11-30 15:13:04

+0

我知道asp.net memebership db。有鑑於此,我會在db中添加IsActive或IsLoggedIn字段。它可以在用戶登錄時更新以及註銷。我認爲這比查找所有活動會話對象更好。當然,應該有更多的方法來實現這一點。 – Saar 2009-11-30 15:18:55

回答

3

您可以使用全局asax和以下方法。

sub session_onStart() 

    application.lock() 
    // your logic 
    application.unlock() 

end sub 

sub session_onEnd() 

    application.lock() 
// your logic 
    application.unlock() 

end sub 
+1

+1是的,這是我的回退解決方案,但正如我在其他答案中提到的,我很難相信這個集合已經不可用。 – Guy 2009-11-30 15:12:32

2

您可以使用global.asax文件並將一些自定義代碼添加到Session_OnStart事件中,您可以獲取用戶信息並將其更新到可添加管理頁面的數據庫中。

+0

+1這是我想到的一個解決方案。我打算創建一個Session對象列表並將它存儲在Application對象中,但我很難相信這個列表對我們來說已經不可用。 – Guy 2009-11-30 14:58:18