簡體   English   中英

為什么“Session_end”不起作用?

[英]Why “Session_end” not working?

global.asax文件中的事件如下所示:

protected void Session_End(Object sender, EventArgs e)
{
    var x = 5;
}

客戶端關閉窗口時代碼沒有到達那里,為什么?

客戶端關閉窗口時代碼沒有到達那里,為什么?

因為當客戶端關閉瀏覽器時不應該調用此事件。 此事件(顧名思義)旨在在會話到期時調用。 默認會話到期超時為20分鍾,因此在客戶端關閉瀏覽器20分鍾后將調用此事件。

哦,你應該注意一個非常重要的問題:如果你使用的是進程外會話狀態模式(例如StateServer或SqlServer),那么永遠不會調用此事件。

PS: Session_End事件僅由InProc會話管理器支持

當會話過期時會調用它。

我認為你的需要是在頁面關閉或文檔解密時使用javascript函數,即onbeforeunload 。並在該函數中向服務器發出ajax請求,指示客戶端正在關閉窗口。但是你應該注意安全性,因為這個javascript在客戶端注冊的方法,惡意用戶可以更改ajax請求(甚至阻止它)。 如果你不考慮任何安全問題,你很高興。好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM