2017-01-24 2 views
0

Я работал над сценарием, чтобы отправить пользователя на целевую страницу, если они уже не видели его сегодня, используя HttpCookie:Bool HttpCookie перенаправлять на целевую страницу не работает успешно

bool userVisited = false; 
HttpCookie cookie = Request.Cookies["Hoarding"]; 
if (cookie == null) 
{ 
    cookie = new HttpCookie("Hoarding"); 
    cookie.Values.Add("userVisitedSplash", "true"); 
    cookie.Expires = DateTime.Now.AddDays(1); 
    cookie.HttpOnly = true; 
    this.Page.Response.AppendCookie(cookie); 
} 
else 
{ 
    if (!Boolean.TryParse(cookie.Values["userVisitedSplash"], out userVisited)) 
    { 
     userVisited = false; 
    } 
    else 
    { 
     Response.Redirect("/default-splash.aspx"); 
    } 
} 

Этот код перенаправляется успешно, но после нажатия кнопки «САЙТ» на целевой странице он снова перенаправляется на всплеск. Не принимая во внимание, что он уже посетил его.

Что-то явно не так?

+0

Вы видите, что cookie установлен в браузере? – VisualBean

+0

Проблема в том, что последняя ветвь 'else' будет принята, если есть cookie и TryParse успешно. – user1429080

ответ

2

не могли бы вы попробовать это;

bool userVisited = false; 
     HttpCookie cookie = Request.Cookies["Hoarding"]; 
     if (cookie == null) 
     { 
      cookie = new HttpCookie("Hoarding"); 
      cookie.Values.Add("userVisitedSplash", "true"); 
      cookie.Expires = DateTime.Now.AddDays(1); 
      cookie.HttpOnly = true; 
      this.Page.Response.AppendCookie(cookie); 
      Response.Redirect("/default-splash.aspx"); 
     } 
     else 
     { 
      if (Boolean.TryParse(cookie.Values["userVisitedSplash"], out userVisited)) 
      { 
       if (!userVisited) 
       { 
        Response.Redirect("/default-splash.aspx"); 
       } 

      } 
      else 
      { 
       Response.Redirect("/default-splash.aspx"); 
      } 
     } 
+0

не совершенный однако работает. – esertbas

+0

вы гений! Не могу вас поблагодарить! Хороший день для тебя :-) – davvv

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