检测asp.net页面中的超时并重定向到登录

检测asp.net页面中的超时并重定向到登录,asp.net,.net,session,Asp.net,.net,Session,我正在使用Global.asax中的以下代码来检测asp.net应用程序中的超时 protected void Session_Start(object src, EventArgs e) { if (Context.Session != null && Context.Session.IsNewSession) { string sCookieHeader = Request.Headers["Cookie"];

我正在使用Global.asax中的以下代码来检测asp.net应用程序中的超时

 protected void Session_Start(object src, EventArgs e)
    {
        if (Context.Session != null && Context.Session.IsNewSession)
        {
            string sCookieHeader = Request.Headers["Cookie"];
            if (null != sCookieHeader && sCookieHeader.IndexOf("ASP.NET_SessionId") >= 0)
                    Response.Redirect("~/TimeoutMessage.aspx");
        }
    }

但是,当我单击timeoutmessage.aspx页面上的一个超链接(该超链接本应将用户重定向到登录名)时,上面的代码工作得很好,它只会不断将自己重定向到超时页面。

检查这一点的最佳位置是页面中的Oninit事件。请创建从System.Web.UI.page继承的基本页,并重写oninit事件。把你的代码放在那里。然后从此基页继承该页。它会很好用的

public class BasePage:System.Web.UI.Page
    {
        protected override void OnInit(EventArgs e)
        {
            if (Context.Session != null && Context.Session.IsNewSession)
            {
                string sCookieHeader = Request.Headers["Cookie"];
                if (null != sCookieHeader && sCookieHeader.IndexOf("ASP.NET_SessionId") >= 0)
                    Response.Redirect("~/TimeoutMessage.aspx");
            }

            base.OnInit(e);
        }
    }

您在Visual Studio中进行过任何调试吗?sCookieHeader的值是多少?ScookeHeader.IndexOf(“ASP.NET_SessionId”)的返回值是多少?我仍然面临检测到时间并重定向到“Timeoutmessage.aspx”页面上的相同问题“Timeoutmessage.aspx页面重定向到登录名的超链接只是保持重定向到Timeoutmessage.aspx页面HI login.aspx不应继承基本页面。这将解决问题