2008-11-13 64 views
4

我有一個ASP.net頁面。當我關閉網頁時,我需要清除會話變量。關閉瀏覽器實際上應該清除會話變量一個ASP.net會話ID

如何處理這個我需要保持超時到20分鐘。 如果他關閉和登錄在二十分鐘的次數超時時間

是否有清除ASP.net會話ID

+0

不是這種重複http://stackoverflow.com/questions/283591/ aspnet-session-destroy-if-he-close-the-browser – 2008-11-13 14:51:53

+0

對不起,但我想你可能會試圖在這裏解決錯誤的問題。爲什麼你需要立即清除會話狀態? – Kramii 2008-11-13 15:25:50

回答

5

[編輯]正如其他人的建議,你的會議應時間任何方法可行但如果你想在超時之前關閉會話(例如清理大型會話對象)並讓你的javascript可用...

你可以用一個window.onbeforeunload處理程序來做到這一點,該處理程序回發到退出頁面。

function CloseSession() 
{ 
    location.href = 'SignOut.aspx'; 
} 
window.onbeforeunload = CloseSession; 

你也可以通過AJAX做到這一點。 SignOut.aspx頁面(或者你正在使用的任何平臺)應該放棄用戶的會話。

+1

只需準備好在瀏覽器崩潰的情況下就不會被調用。 – 2008-11-13 14:23:59

5

我認爲唯一的好方法是在服務器上設置會話變量的超時時間。 Web服務器無法確定用戶是否已關閉瀏覽器。

Javascript不是一個好的選擇,因爲你可以禁用它的客戶端。

2

如果瀏覽器進程結束會怎麼樣?

Here是一招

你不應該有他們需要清理這麼多的會話變量。查看this發佈其他選項。

11

你不能那樣做。

  1. 你不能依賴於事件發生在瀏覽器
  2. 沒有辦法的服務器可以聯繫的瀏覽器,看它是否還活着

你不控制端的瀏覽器-用戶。用戶可能會關閉瀏覽器,崩潰,斷開Internet連接,禁用JavaScript或崩潰等,或者用戶可能只需輸入另一個URL(之後用戶可能會使用後退按鈕返回到您的頁面,並且希望繼續他/她的會議與您的網站)。

window.onbeforeunload在每次卸載頁面時觸發。即使用戶瀏覽到您網站上的其他頁面,也可能需要重新進行會話。

0

我不清楚ASP.Net如何實現其會話,但Cookie RFC的一部分是,會話cookie(無特定'expires'日期的cookie)在瀏覽器關閉時被清除。

肯定有辦法讓ASP.Net使用正確的會話cookie而不是固定超時的cookie?

-1

您好試試這個JavaScript函數

function ConfirmClose() 
{ 
if (event.clientY < 0) 
{ 
     /* Your asynchronouse request to the page and call that function*/ 
} 
} 
/*now call this method on event of javascript*/  

我didn'try這一點,但它只是從心中出來

相關問題