我试图在我的 asp.net 应用程序中检测会话状态超时,但无法这样做。我有一个派生自 System.Web.UI.Page 的基类,如下所示:-
public class BasePageSessionExpire : Page
{
override protected void OnInit(EventArgs e)
{
base.OnInit(e);
if (Context.Session != null)
{
if (Session.IsNewSession)
{
string szCookieHeader = Request.Headers["Cookie"];
if ((null != szCookieHeader) && (szCookieHeader.IndexOf("ASP.NET_SessionId") > 0))
{
Session.Abandon();
Response.Redirect("~/SessionExpired.aspx",true);
}
}
}
}
}
我需要检查会话状态的所有页面都派生自这个基类,而不是“System.Web.UI.Page”。此外,所有这些页面都具有 EnableSessionState="True"。如果相关的话,我的 global.asax 文件中有一个空白的 Session_Start() 方法。
出于某种原因,在第一次请求之后,“Session.IsNewSession”属性始终为 false。仅对第一个请求为真,然后始终为假。我将超时设置为 1 分钟。会话似乎永远不会超时。我在这里想念什么?
我还在 SQL Server 2008 中实现了一个状态服务器。这不是进程内会话状态实现。
提前致谢。