2016-09-13 127 views
0

我在Global.asax.cs的Session_End()中如何知道會話結束的頁面?

只有會話在特定頁面上結束時,我才需要執行該操作。參數(sender和eventArgs)沒有任何幫助。有沒有辦法找出用戶所在的最後一頁?

在此先感謝。

回答

0

您可能可以使用HttpContext.Request屬性,但不確定會話過期後它是否仍然有效。

在這種情況下,每次用戶請求新頁面時,都需要在Cookie中明確寫入頁面URL。這樣,即使會話過期,您也可以檢查cookie對象並查看最後請求的頁面。

一般情況下,一旦會話過期最終用戶應重新認證他自己,因此你應該重定向到直接登錄頁面,如果你正在使用Forms Authentication那麼你可以說FormsAuthentication.RedirectToLoginPage();

+0

的問題是,我不想做一個登錄重定向。這是一個數據庫操作,只有當會話在特定頁面上超時時才需要觸發。讓我看看HttpContext.Request屬性是否有幫助。 – Pallavi

+1

所以你只需要最後一次請求的頁面?在這種情況下,您可以將cookies或pageurl存儲在cookie中。 – Rahul

0

您可以儲存的網址在每個請求的Session中訪問最後一頁。通過這種方式,當會話結束時(global.asax Session_End),您可以閱讀用戶在會話結束前上次訪問的頁面。

這是因爲大多數事件都是由請求觸發的,但除非明確放棄,否則會話結束是由缺少活動引起的。它由服務器在沒有請求一段時間時確定。根據定義,不會有來自用戶的任何通信表明會話正在結束。他們可能在五分鐘前關閉了瀏覽器。

(這是隻有在會話狀態HttpSessionState.Mode屬性值是InProc,否則該事件將不會觸發。)