我正在開發一個ASP.NET 3.5 WebForms應用程序,我希望會話在一段時間後超時。之後,如果用戶試圖做任何事情,應用程序應該將它們重定向到一個頁面,指出會話已超時,並且需要重新開始。據我所知,非常標準的東西。會話不在ASP.NET Web應用程序超時
但是,我似乎無法使會話超時測試此功能,無論是從Visual Studio或從IIS運行。這裏是我的會話狀態設置在web.config中:
<sessionState mode="SQLServer"
allowCustomSqlDatabase="true"
sqlConnectionString="<ConnectionString>"
cookieless="false"
timeout="1" />
以下是我正在測試用於會話超時:
public bool IsSessionTimeout
{
get
{
// If the session says its a new session, but a cookie exists, then the session has timed out.
if (Context.Session != null && Session.IsNewSession)
{
string cookie = Request.Headers["Cookie"];
return !string.IsNullOrEmpty(cookie) && cookie.IndexOf("ASP.NET_SessionId") >= 0;
}
else
{
return false;
}
}
}
看來,Session.IsNewSession
總是返回false
,這是有道理的,因爲Session_End中的方法永遠不會在我的Global.asax.cs中被調用。我錯過了什麼?
我相信Session_End中只在會話過程要求。檢查會話ID以查看是否在時間到期後生成新的ID。 –