3
A
回答
4
聲明:我只是想出了這個實現,因爲我認爲這是一個有趣的和可解決的問題。因此,可能存在一些我忽略考慮的問題或細節。儘管如此,如果您使用InProc會話狀態,這裏有一個解決方案。
摘要:創建在Application_Start
事件期間創建的以應用程序狀態存儲的應用程序級對象(例如,列表),並在每個Session_Start
事件中爲該列表添加對該會話的引用。在Session_End
上,將其刪除。要檢索所有活動會話和值,請循環訪問會話列表,然後遍歷每個會話的會話密鑰。
的Global.asax
void Application_Start(object sender, EventArgs e)
{
Application["activeSessions"] = new System.Collections.Generic.List<HttpSessionState>();
}
void Session_Start(object sender, EventArgs e)
{
var activeSessions = (System.Collections.Generic.List<HttpSessionState>)Application["activeSessions"];
activeSessions.Add(this.Session);
}
void Session_End(object sender, EventArgs e)
{
var activeSessions = (System.Collections.Generic.List<HttpSessionState>)Application["activeSessions"];
activeSessions.Remove(this.Session);
}
SomePage.aspx頁面
//add something to session for test
this.Session["someStr"] = DateTime.Now.ToString();
//get sessions
var activeSessions = (List<HttpSessionState>)Application["activeSessions"];
foreach (var session in activeSessions)
{
Response.Write("Session " + session.SessionID + "<br/>");
foreach (string key in session.Keys)
{
Response.Write(key + " : " + session[key] + "<br/>");
}
Response.Write("<hr/>");
}
輸出:(後裝載了第二個瀏覽器擊中頁)
Session sj0sa255uizwlu45zivyfg2m someStr : 8/28/2009 11:03:37 AM ---- Session 530b3sjtea22jm451p15u355 someStr : 8/28/2009 11:03:43 AM ----
0
會話不能從另一個會話訪問。但是,通過實施會員提供商,您可以知道會話是否處於活動狀態以及有關用戶活動的許多其他有用信息。通過使用數據庫持久化會話狀態,您可以檢索所需的信息。
您可以使用「活動」標誌來存儲/刪除數據庫中的會話,以獲得更具擴展性的解決方案,以防萬一您的重要。
相關問題
- 1. 查看express.js中所有當前活動的會話
- 2. 如何從java中的所有活動會話中清除會話屬性?
- 3. 關閉所有活動會話
- 4. 如何清除ASP.NET中所有用戶的SQL會話狀態
- 5. 如何查看Rails 3中的所有會話?
- 6. 當您使用DynamoDB訪問會話狀態時,會話狀態是否讀取/寫入所有內容
- 7. 如何在Mojolicious Lite應用程序中查看所有活動會話?
- 8. 如何訪問CherryPy中的所有活動會話
- 9. 有狀態會話Bean和HTTP會話
- 10. 查找所有會話狀態的使用
- 11. JSP如何查看服務器上的所有會話
- 12. 刪除所有會話,除1會話
- 13. Django會話存儲所有會話
- 14. 爲ASP.NET中的所有用戶找到會話狀態
- 15. 檢查所有控制器的會話?
- 16. EJB無狀態會話bean和有狀態會話bean
- 17. 有狀態會話Bean vs無狀態會話Bean
- 18. WSO2 BRS有狀態會話
- 19. 封裝有狀態會話
- 20. cherrypy:如何獲得所有活動會話(storage_type =「文件」)
- 21. 在android中註冊會話像所有活動共享的值
- 22. 獲取彈簧安全中的所有活動會話
- 23. 訪問所有正在進行的ASP.NET會話狀態
- 24. Java EE 6:如何從無狀態會話Bean調用有狀態會話Bean?
- 25. ASP.NET:如何刪除所有用戶的所有會話變量?
- 26. 讓Watin會話保持活動狀態
- 27. 檢查會話工廠是否有活動會話
- 28. 如何刪除所有會話和Cookie
- 29. 如何關閉所有Firefox會話?
- 30. 如何刪除所有Flask會話?
所以,基本上,你所做的是實現你自己的會話服務器;)如你所說,這將適用於InProc會話 - 如果你不使用InProc,那麼Session_End不會被調用,但是你將所有會話數據存儲在數據庫中,這樣您就可以輕鬆地從這裏讀取它;) – 2009-08-28 15:47:20