c# - saber - Diferencia entre HttpResponse: SetCookie, AppendCookie, Cookies.Add
eliminar cookies asp net (3)
Hay algunas formas diferentes de crear cookies de valor múltiple en ASP.NET:
var cookie = new HttpCookie("MyCookie");
cookie["Information 1"] = "value 1";
cookie["Information 2"] = "value 2";
// first way
Response.Cookies.Add(cookie);
// second way
Response.AppendCookie(cookie);
// third way
Response.SetCookie(cookie);
¿Cuándo debería usar qué camino? He leído que el método SetCookie
actualiza la cookie, si ya está abierta. ¿Las otras formas no actualizan la cookie existente también?
¿Y es la mejor práctica del código siguiente para escribir cookies de valor único?
Response.Cookies["MyCookie"].Value = "value";
¿Cuándo debería usar qué camino?
Depende de qué operación de Cookie quieras hacer.
Tenga en cuenta que Add
y AppendCookie
están haciendo la misma funcionalidad, excepto el hecho de que con AppendCookie
no está haciendo referencia a la propiedad Cookies
de la class
Response
y lo está haciendo por usted.
-
Response.Cookies.Add
: agrega la cookie especificada a la colección de cookies. -
Response.AppendCookie
: agrega una cookie HTTP a la colección de cookies intrínsecas -
Response.SetCookie
: actualiza una cookie existente en la colección de cookies.
No se lanzarán Exceptions
cuando se agreguen cookies duplicadas o cuando se intente actualizar una cookie que no existe.
La principal exception
de estos métodos es: HttpException
( se agrega una cookie después de enviar los encabezados HTTP ) .
El método Agregar permite cookies duplicadas en la colección de cookies. Use el método Set para garantizar la exclusividad de las cookies en la colección de cookies.
¡Gracias por MSDN !
Para aprovechar el comentario de AppendCookie
en la respuesta de Wiktor, no se deben usar AppendCookie
y SetCookie
, son para uso interno de .NET Framework. No deberían ser públicos, pero lo son, supongo que sería como un truco para el oleoducto de IIS en otro lugar.
Entonces, debe hacer su configuración de cookies de esta manera (o escribir un método de extensión para configurar múltiples cookies):
string cookieName = "SomeCookie";
string cookieValue = "2017";
if (Response.Cookies[cookieName] == null)
{
Response.Cookies.Add(new HttpCookie(cookieName, cookieValue));
}
else
{
Response.Cookies[cookieName].Value = cookieValue;
}
Si recuerdo correctamente ambos
Response.Cookies.Add(..)
y
Response.AppendCookie(..)
permitirá agregar múltiples cookies del mismo nombre a la respuesta.
Por otra parte
Response.SetCookie(..)
y
Response.Cookies[key].Value = value;
siempre sobrescribirá las cookies anteriores del mismo nombre.