asp.net - net - Las cookies de ASP MVC no persisten
forms asp net core (2)
Tengo una aplicación ASP MVC con un código aparentemente simple para guardar y recuperar las cookies, pero por alguna razón no persistirán. El código en el controlador es:
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);
}
Y para cargarlo de nuevo:
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;
}
Por algún motivo, ¿la cookie siempre es nula?
El problema radica en seguir el código:
if (System.Web.HttpContext.Current.Response.Cookies["CountryPreference"] == null)
Cuando intenta verificar la existencia de una cookie utilizando el objeto Response en lugar de Request, ASP.net crea automáticamente una cookie.
Consulte esta publicación detallada aquí: http://chwe.at/blog/post/2009/01/26/Done28099t-use-ResponseCookiesstring-to-check-if-a-cookie-exists!.aspx
Cita del artículo en caso de que el enlace vuelva a caer ...
La breve explicación, si no te gusta leer toda la historia
Si utiliza un código como "if (Response.Cookies [" mycookie "]! = Null) {...}", ASP.Net genera automáticamente una nueva cookie con el nombre "mycookie" en segundo plano y sobrescribe su cookie anterior. ¡Siempre use Request.Cookies-Collection para leer las cookies!
En resumen, no use " Respuesta " para leer las cookies, use " Solicitud ".