2014-01-28 60 views
2

我使用下面的代碼在Global.asax檢測超時在asp.net應用程序檢測超時在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頁面上的一個超鏈接,該頁面應該重定向用戶的登錄名,它只是保持重定向到超時頁面。

+0

你在Visual Studio中做過任何調試嗎? sCookieHeader的價值是什麼?什麼是sCookieHeader.IndexOf(「ASP.NET_SessionId」)的返回值? – Jason

回答

0

檢查此問題的最佳位置是頁面中的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); 
     } 
    } 
+0

我仍然面臨着相同的問題,檢測到時間並重定向到「Timeoutmessage.aspx」頁面,在「Timeoutmessage.aspx頁面超鏈接重定向到登錄只是保持重定向到Timeoutmessage.aspx頁面 – user989865

+0

您好登錄。 aspx不應該繼承BasePage,這將解決問題 – Thanigainathan

相關問題