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?
Ответы
Ответ 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".