2013-10-22 50 views
0

我有一組方法可以在註銷時清除緩存數據,當會話超時時是否有簡單的方法來觸發這些功能?我已經更新了我的網絡配置,有1分鐘的時間進行測試。超時觸發註銷方法

我遇到的問題是顯示的某些內容是基於用戶登錄持續的,如果會話超時並且新用戶登錄,他們將看到以前的用戶信息。這在登出時不會發生,因爲邏輯已經到位。

我不需要一個答案,而是一個指向正確的方向如何處理超時函數。

+0

這不是頁面超時,它的會話。一個頁面與服務器斷開連接,所以它不會觸發任何類型的超時事件。服務器只是詢問會話的最後一個請求,並在發出新請求時將其與當前日期時間進行比較,並確定會話是否超時。 –

+0

謝謝你,用正確的上下文更新了問題。這就是我的意思,但我從用戶的角度來講,我的錯誤。 –

回答

1

添加到您的Global.asax:

public void Session_OnEnd() 
{ 
    //Find user's data using SessionId and remove it 
} 
+0

現在不會觸發註銷嗎?在那裏設置一箇中斷點顯示這個方法在註銷和超時時觸發,可以說我希望基於註銷或會話超時發生不同的事情,您將如何處理這個問題。用於註銷的變量無法在此處獲得,我正在處理其他人的代碼,因此這對我來說是一種學習體驗。 編輯:此代碼塊永遠不會在會話超時時到達,只有在用戶選擇註銷時纔會達到此代碼塊。 –

+0

恐怕,除非你想開始投票/敲擊你的數據庫來確定會話何時到期,否則這與你將要得到的結果差不多。您可以添加一個會話變量來區分註銷和在過期會話的上下文中進行請求的時間。 –

+0

謝謝你的洞察力,這是一個小錯誤,但如果這是一個簡單的解決方案,我會去爲它。這似乎是更多的重新設計工作,而不是價值。 –

0

我所做的只是對數ClearAllSessionKeys上,而不是在會話超時。這有同樣的效果,並解決了我的問題。