2014-11-04 2 views
0

У меня есть действие с контроллером, которое вызывает частный метод, который обрабатывает файл cookie. Проблема в том, что cookie вообще не создается. Я прочитал несколько сообщений в SO, но я не нашел ответа, поскольку считаю, что мои файлы cookie в этом коде верны.ASP.NET MVC 5 - Cookies не созданы

Есть ли какой-либо параметр web.config, который мне нужно проверить в отношении файлов cookie? Я также пробовал разные браузеры.

Я отлаживал код, и я вижу, что cookie действительно установлен в коде, но как только я загружаю страницу и просматриваю файлы cookie, cookie там нет.

private ABHomeModel HandleWhiteBoxCookie(ABHomeModel model) 
     { 
      var whiteBox = _whiteBoxService.GetActiveWhiteBox(); 

      if (model.WhiteBox != null) 
      { 
       const string cookieName = "whiteBox"; 

       var whiteBoxCookie = HttpContext.Request.Cookies.Get(cookieName); 

       if (whiteBoxCookie != null) 
       { 
        var displayedTimes = Convert.ToInt32(whiteBoxCookie.Value); 
        if (displayedTimes < 2) 
        { 
         displayedTimes++; 

         var cookie = new HttpCookie(cookieName, displayedTimes.ToString()) 
         { 
          Expires = new DateTime().AddMonths(1), 
          Secure = false 
         }; 

         HttpContext.Response.Cookies.Set(cookie); 
         ViewBag.IsWhiteBoxActive = true; 
        } 
        else 
        { 
         ViewBag.IsWhiteBoxActive = false; 
        } 
       } 
       else 
       { 
        var cookie = new HttpCookie(cookieName, "1") 
        { 
         HttpOnly = true, 
         Domain = Request.Url.Host, 
         Expires = DateTime.Now.AddMonths(1), 
         Secure = false 
        }; 

        HttpContext.Response.Cookies.Add(cookie); 
        ViewBag.IsWhiteBoxActive = true; 
       } 

       model.WhiteBox = whiteBox; 
      } 

      return model; 
     } 
+1

попытка захвата трафика и посмотреть, что ответ выглядит как – Steve

+1

Стив Фентона это объяснило довольно хорошо на этом посту. http://stackoverflow.com/a/4285929/4216075 –

ответ

0

Мой коллега нашел проблему. Это касается установки домена. Как только мы удалили эту строку:

Domain = Request.Url.Host, 

Печеньки начали работать и в настоящее время создаются.

Полный обновленный код метода:

private ABHomeModel HandleWhiteBoxCookie(ABHomeModel model) 
     { 
      var whiteBox = _whiteBoxService.GetActiveWhiteBox(); 

      if (whiteBox != null) 
      { 
       const string cookieName = "whiteBox"; 

       var whiteBoxCookie = HttpContext.Request.Cookies.Get(cookieName); 

       if (whiteBoxCookie != null) 
       { 
        var displayedTimes = Convert.ToInt32(whiteBoxCookie.Value); 
        if (displayedTimes < 2) 
        { 
         displayedTimes++; 

         var cookie = new HttpCookie(cookieName, displayedTimes.ToString()) 
         { 
          HttpOnly = true, 
          Secure = false 
         }; 

         HttpContext.Response.Cookies.Set(cookie); 
         ViewBag.IsWhiteBoxActive = true; 
        } 
        else 
        { 
         ViewBag.IsWhiteBoxActive = false; 
        } 
       } 
       else 
       { 
        var cookie = new HttpCookie(cookieName, "1") 
        { 
         HttpOnly = true, 
         Expires = DateTime.Now.AddMonths(1), 
         Secure = false 
        }; 

        HttpContext.Response.Cookies.Add(cookie); 
        ViewBag.IsWhiteBoxActive = true; 
       } 

       model.WhiteBox = whiteBox; 
      } 

      return model; 
     } 
Смежные вопросы