2010-09-16 60 views
3

Session過期時,是否可以控制ASP.NET的行爲?似乎默認行爲是將用戶發送到網站根目錄。預期的效果是將用戶發送到自定義的「Session Expired」頁面。SessionState過期行爲

爲了澄清,這是即將到期(超時設置爲1分鐘快速測試吧)SessionState

<sessionState mode="InProc" timeout="1"></sessionState> 

身份驗證cookie超時是一路走高,以避免任何混淆:

<authentication mode="Forms"> 
    <forms loginUrl="SessionExpired.aspx" slidingExpiration="true" name=".ttpASPXAUTH" timeout="58" protection="All"></forms> 
</authentication> 
+1

你的意思是授權票據過期而不是SessionState到期?當SessionState過期時,你無法重定向。 – 2010-09-16 15:01:10

+1

不確定你的意思是重定向到根目錄。如果用戶重新提交頁面,您仍然會返回到請求頁面,那麼授權/身份驗證處理程序可能會將您重定向到登錄頁面(如果它們已就位) – GrayWizardx 2010-09-16 15:02:07

+0

這不是即將到期的授權cookie,而是SessionState。編輯該問題以添加更多細節。 – Farinha 2010-09-17 07:57:48

回答

0

我不確定整個授權憑單/會話狀態問題,但是在會話過期後將某人重定向到特定頁面的一種簡單方法是將代碼放入Global.asax文件的Application_AcquireRequestState事件中,以便檢查 一個會話變量,如果它不存在,重定向到你的「會話過期」頁面。

+0

剛剛嘗試過。問題在於這個Application_AcquireRequestState在每一個請求中都被命中,這意味着試圖從這個事件重定向導致無限循環。 – Farinha 2010-11-09 11:25:10

0

你可以在Session_Start方法中的global.asax中捕獲它。

我用這樣的簡單網站:

​​

如果他們沒有在主頁上,她被髮送到錯誤頁面有消息說她的會話已過期。

+0

所以你在這裏說的是會話只能從主頁開始。如果由於任何原因該事件是從任何其他頁面觸發的,則意味着它已經過期,並且該應用正試圖再次啓動它。對? – Farinha 2010-11-09 11:27:52