[英]How to get a list of active sessions in a web application?
我試圖在我的 Web 應用程序中獲取活動會話 ID 的列表。
我試圖在 Global.asax 中管理一個列表。 我在 Session_Start 被觸發時添加會話 ID,並在 Session_End 被觸發時刪除會話 ID。
問題出現在用戶關閉瀏覽器或關閉計算機的情況下。 Session_End 沒有被觸發,並且該列表仍然存在。
有人知道我怎樣才能得到清單?
謝謝!
沒有解決此問題的方法可以避免您注意到的復雜情況。 除非有某種明確的方式來結束用戶的會話 -並且用戶激活它- 知道會話何時結束的唯一方法是允許它過期。
Session_End
最終會在會話超時時觸發。 您從未看到Session_End
被調用的唯一時間是應用程序域本身意外退出時。 在這種情況下,您知道您的所有會話都已死,無論如何。
安德魯·巴伯是對的。 您還可以做一件事:
這是我如何做到的:
<script type="text/javascript">
$(function () {
$("a").click(function () {
window.onbeforeunload = null;
});
});
</script>
<script type="text/javascript">
window.onbeforeunload = confirmExit;
function preConfirm() {
if ((window.event.clientX < 0) || (window.event.clientY < 0)) {
confirmExit();
}
}
function confirmExit() {
return "You have attempted to leave this page. It is suggested to log out using the link. Are you sure you want to exit this page?";
}
</script>
通過將這些腳本添加到您的母版頁(如果是這種情況或在每個頁面中),如果用戶嘗試加載另一個頁面或關閉瀏覽器而不注銷,瀏覽器會使用帶有您的消息的模式窗口提示用戶。
當然,即使您提醒他注銷,用戶我還是決定離開該頁面,但實際上您已盡力而為!!
如果使用SQL Server數據庫來存儲您的會話過程變得更容易檢索這似乎通過使用SQL查詢來獲取你所需要的是被激活的。
我說出現是因為就像其他人指出的那樣,如果使用Session.Abandon()
沒有正確清除會話,則會話可能會掛起,例如,如果用戶只是關閉瀏覽器窗口而不注銷。 這意味着您只能依靠會話的到期日期來確保會話完全結束,無論您設置了多長時間。
我還應該指出,如果您確實使用數據庫作為會話存儲,則Session_End
事件將永遠不會觸發。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.