2010-12-09 51 views
1

我正在嘗試解決我的會話超時代碼,並遇到了一個有趣的問題。我已經採納了建議herehere,假設我在Session.IsNewSession爲true且會話cookie已存在時發生超時。根據多個帖子,這些跡象表明超時已經發生。在用戶登錄之前,我在主頁上進行的所有這些檢查(在超時和註銷情況下它們都會重定向到此頁面)。ASP.NET:Response.Redirect()結束當前會話嗎?

所以我們假設這一切都是正確的。當用戶在應用程序中點擊註銷,我跑我需要的數據庫代碼結束會話,然後我運行此:

//abandon session 
Global.Session.Abandon(); 

//redirect 
Response.Redirect(FormsAuthentication.LoginUrl, false); 

我在網頁上立刻注意到了什麼,當我進行會話超時檢查, Session.IsNewSession是真的,最終導致認爲會話超時的邏輯。顯然它不是;用戶只需點擊註銷。通過在我的全局文件中的Session_End中放置一個斷點,我能夠在用戶註銷時執行Response.Redirect()語句後看到Session_End被觸發。

所以我想知道如果這應該發生?最初我認爲它與Session.Abandon()有關,但這似乎並沒有導致Session_End觸發。有任何想法嗎?

謝謝。

回答

2

Session_End事件僅在當前請求完成後觸發。重定向是您的請求的結束,因此該事件在那個時候觸發。重定向本身不會結束當前會話。

+0

而我假設會議在該請求期間結束,因爲我說Session.Abandon()? – 2010-12-09 19:03:40