我经常使用并显示以下“cookie-cutter”代码,以检测 Session 在 ASP.NET Web 表单中是否超时:
if (HttpContext.Current != null)
{
if (Context.Session != null)
{
if (Session.IsNewSession)
{
string cookieHeader = Request.Headers["Cookie"];
if ((cookieHeader != null) && cookieHeader.IndexOf("ASP.NET_SessionId", StringComparison.Ordinal) >= 0)
{
Redirect the timed out user to the ErrorInfo page:
Response.Redirect(@"~\ErrorInfo.aspx", true);
}
}
}
}
这Internet Explorer
在其他浏览器(如Chrome
. 问题在于Request.Headers["Cookie"]
允许逻辑工作的null
应用程序负载IE
,但已经为Chrome
. 因此,当我在 Chrome 中启动应用程序时,它会立即重定向到ErrorPage
会话已超时的说法。
有谁知道修改此代码以使其与浏览器无关的方法,以便我可以检测会话超时而不管浏览器如何?
编辑:我读过这个(ASP.Net Session Timeout detection: Is Session.IsNewSession and SessionCookie detection the best way to do this?)它不提供具体的解决方案,而是针对稍微不同的高级描述用例。我看到这个问了很多,没有具体的解决方案。这一个(Firefox 和 Chrome 中的 ASP.Net(C#) 中的 Session)也适用于不同的用例,它的解决方案不会改变结果。