1

我经常使用并显示以下“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)也适用于不同的用例,它的解决方案不会改变结果。

4

0 回答 0