我使用的是ASP.NET框架(用C#)和我爲每一個用戶會話變量的所有會話迭代。是否有可能遍歷已初始化的所有會話?在這個迭代中,我還想更改某些會話的某些屬性。是否有可能通過存儲服務器上的C#
我試圖改變存儲在會話變量的一些數據。我有特定用戶的會話ID,我想要更改他們的會話,所以我還需要能夠比較Ids。
我使用的是ASP.NET框架(用C#)和我爲每一個用戶會話變量的所有會話迭代。是否有可能遍歷已初始化的所有會話?在這個迭代中,我還想更改某些會話的某些屬性。是否有可能通過存儲服務器上的C#
我試圖改變存儲在會話變量的一些數據。我有特定用戶的會話ID,我想要更改他們的會話,所以我還需要能夠比較Ids。
我不知道是否有處理這個任何框架類,但如果你真的通過每個請求的IIS服務器上創建的會話需要循環,爲什麼不能每個會話存儲在自己的收藏對象,您可以從您的代碼訪問? 例如,在global.asax文件中,您可以在Session_Start事件中添加自己的代碼,以將特定會話保存到您的列表中。您將不得不檢查會話是否是新會話,可以通過Session.IsNewSession屬性完成。每次創建一個新會話時,都會觸發Global.asax中的Session_Start事件。
但有一點是問題,如果你當他們超時或結束不刪除從列表中的會話,所以我怎麼可能去這樣做是:
在在session_start事件,檢查此。 Session.IsNewSession布爾值
如果Session.IsNewSession爲true,則獲取當前會話(使用this.Session,因爲Global.asax在其上下文中具有當前新會話),並使用密鑰將其保存在Dictionary對象中作爲Session.SessionId。
這將創建一個獨特的密鑰對集合了在服務器創建的每個會話。
在Session_End中的事件,得到當前會話(this.Session),這是已經結束了一個的Session.SessionID財產。
使用成品會話值以除去鍵值對在包含會話的詞典的Session.SessionID。
一旦基礎設施到位,並且字典對象駐留在其中可以通過應用程序代碼訪問的地方,你可以檢索這本字典和遍歷它來獲得活躍在該服務器的會話時間點。
這不起作用。登錄後,來自控制器的代碼會將'Session.SessionId'顯示爲'foo'(示例)。我循環我的靜態會話列表並找到與'foo'相同的列表。但其餘的屬性不匹配。就像它有兩個副本。 – Paul
我們假設答案是「是」。接下來你需要什麼?你的問題不完整。 –
重複的[問題1](http://stackoverflow.com/questions/1470334/list-all-active-asp-net-sessions)或[問題2](http://stackoverflow.com/questions/8854176/GET-A-列表中,所有活躍的會話式-ASP網)。 – Candide
http://weblogs.asp.net/imranbaloch/archive/2010/04/05/reading-all-users-session.aspx – Tariqulazam