我想弄清楚如何摧毀一個ASP.NET會話時,用戶導航離我的site.I使用Global.ascx應用程序文件並使用session_end事件。點擊註銷按鈕。但是,當我直接關閉瀏覽器20分鐘後不使用全局文件。我在web.conig文件作爲<sessionState mode="InProc" timeout="20"></sessionState>
請幫我
奧古斯丁會話處理在asp.net
回答
會話超時定義當一些會議將一些閒置的時間後銷燬終止會話。
如果您想要更好地控制會話,您需要使用SQLServer模式,狀態服務器模式或自己定製的模式。
我的意思是,因爲,例如,SQLServer模式將會話存儲在標準SQL Server表中,因此,您可以實現一些SQL Server作業,或者在Windows或某些Windows服務中安排某些任務,以便可以清理根據您的需要開啓會議。
順便說一句,也許你需要知道,如果你使用InProc,你的會話可能會被破壞,因爲IIS回收應用程序池或服務器完全重新啓動。這不是結束會話,所以適用的事件和處理程序在這種情況下不起作用。
我再說一遍,如果您需要更好的會話管理模式,就像我建議您的那樣。
編輯:
查看本頁面: http://aspalliance.com/520_Detecting_ASPNET_Session_Timeouts.2
您將學習如何處理會話超時更好,因爲當會話過期Session_End中不叫,但是當你調用「 Session.Abandon」。
您可以通過調用Session.Abandon()
我使用Session.abandon和明確的(),但是,我的問題是,如果我們關閉瀏覽器它不工作... – augustine 2011-03-28 07:36:36
當訪問者「導航」或「關閉瀏覽器」時,瀏覽器不會向網站發送信號。所以asp.net(或任何其他服務器端技術)不能對此做出反應以銷燬會話。
這就是爲什麼會話在超時時間內工作的原因:如果用戶在超時時間內沒有執行請求,那麼他應該已經放棄了會話,即使他剛剛閱讀該頁面超過20分鐘。
使用RegisterClientScriptBlock創建一個調用頁面加載session.End並關閉頁面(Window.Close())的新頁面。在使用Javascript卸載當前頁面時調用此新頁面window.Location。
可以使用INPROC模式的SQLServer模式instread
+1:一個非常好的教程馬蒂亞斯。 – Kamyar 2011-03-28 08:00:57
謝謝。但我沒有編寫這個教程! :D – 2011-03-28 08:03:45
我知道。但感謝分享:) – Kamyar 2011-03-28 08:05:17