ASP MVC Cookies не сохраняются - PullRequest
       13

ASP MVC Cookies не сохраняются

54 голосов
/ 19 января 2009

У меня есть приложение ASP MVC с некоторым, казалось бы, простым кодом для сохранения и получения файлов cookie, но по какой-то причине они не сохраняются. Код в контроллере:

if (System.Web.HttpContext.Current.Response.Cookies["CountryPreference"] == null)
{
    HttpCookie cookie = new HttpCookie("CountryPreference");
    cookie.Value = country;
    cookie.Expires = DateTime.Now.AddYears(1);
    System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
}

И снова загрузить его:

if (System.Web.HttpContext.Current.Request.Cookies["CountryPreference"] != null)
{
    System.Web.HttpContext.Current.Request.Cookies["CountryPreference"].Expires = DateTime.Now.AddYears(1);
    data.Country = System.Web.HttpContext.Current.Request.Cookies["CountryPreference"].Value;
}

Почему-то cookie всегда нулевой?

Ответы [ 2 ]

94 голосов
/ 26 февраля 2009

Проблема заключается в следующем коде:

if (System.Web.HttpContext.Current.Response.Cookies["CountryPreference"] == null)

Когда вы пытаетесь проверить наличие файла cookie, используя объект Response, а не Request, ASP.net автоматически создает файл cookie.

Проверьте этот подробный пост здесь: http://chwe.at/blog/post/2009/01/26/Done28099t-use-ResponseCookiesstring-to-check-if-a-cookie-exists!.aspx


Цитата из статьи на случай, если ссылка снова отключится ....

Краткое объяснение, если вы не люблю читать всю историю

Если вы используете код вроде «если (Response.Cookies [«mycookie»]! = Ноль) {…} », ASP.Net автоматически генерирует новый файл cookie с именем «Mycookie» на заднем плане и перезаписывает ваше старое печенье! Всегда используйте Request.Cookies-Коллекция для чтения печенье!

[ Подробнее в статье ]

2 голосов
/ 13 мая 2013

В резюме не используйте " Ответ " для чтения файлов cookie, используйте " Запрос ".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...