我正在嘗試解決我的會話超時代碼,並遇到了一個有趣的問題。我已經採納了建議here和here,假設我在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觸發。有任何想法嗎?
謝謝。
而我假設會議在該請求期間結束,因爲我說Session.Abandon()? – 2010-12-09 19:03:40