Подтвердить что ты не робот

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

У меня есть приложение 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 всегда имеет значение null?

4b9b3361

Ответ 1

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

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


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

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

Если вы используете код типа "if (Response.Cookies [" mycookie "]!= Null) {...}", ASP.Net автоматически генерирует новый файл cookie с именем "mycookie" в фоновом режиме и перезаписывает ваш старый файл cookie! Всегда используйте сборка Request.Cookies-Collection для чтения печенье!

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

Ответ 2

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