2014-01-28 1 views
2

Я использую следующий код в Global.asax для обнаружения тайм-аут в приложении asp.netDetect время в 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

Смежные вопросы