una saber persistente net existe eliminar crear cookie como asp c# asp.net cookies

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.