2009-03-10 10 views
6

Estoy interesado en cómo convertir un objeto normal HttpCookie en una cookie que caduca al final de una sesión. No estoy interesado en alguien showing me HttpContext.Session. ¿Cómo se ve una cookie de sesión en los encabezados de respuesta en comparación con una cookie normal? ¿Cómo puedo modificar un HttpCookie para que expire al final de una sesión? ¡Gracias!.net HttpCookie clase/sesión cookie preguntas

Respuesta

14

Una cookie de sesión es simplemente una cookie que no tiene establecida ninguna fecha de caducidad.

Response.Cookies.Add(new HttpCookie("name", "value")); 

o:

Response.Cookies["name"] = "value"; 
7

Una cookie con vencimiento de DateTime.MinValue (1/1/0001) caducará al final de la sesión. Esta es la fecha de vencimiento predeterminada para una cookie en asp.net.

Puede forzar que una cookie se elimine del cliente de inmediato estableciendo la fecha de caducidad en algo antes de "ahora" (DateTime.Now.AddDays (-1d)) en cuyo caso se eliminará cuando llegue al cliente .

Si teníamos tipos anulables cuando se codificó HttpCookie, supongo que una fecha nula equivaldría a una cookie basada en la sesión y cualquier otra cosa se traduciría en el valor de caducidad, pero este no es el caso.

+0

Parece que no fijación de una espiración (en las cabeceras de respuesta) tiene el mismo efecto? – Shawn

+0

No lo he probado, así que no puedo decirlo con certeza. Recientemente, pasé mucho tiempo tratando con una biblioteca de cookies para nuestro marco de proyecto. Personalmente prefiero la fruta en estos días. – andleer

+0

Estaría encantado de compartir la biblioteca en algún momento. – andleer

5

Caducidad de galletas: galletas

  • Sesión - Expira fecha debe ser DateTime.MinValue que es 1/1/0001 00:00:00
  • Cookie normal (limitado en el tiempo): la fecha de vencimiento es cualquier fecha futura igual o superior a DateTime actual. Ahora.
  • Cookie eliminada: en cualquier momento entre DateTime.MinValue y DateTime.Now.

Para cambiar la cookie en cookie de sesión, simplemente asigne MinValue.

httpCookie.Expires = DateTime.MinValue; 

Si su cookie es nueva. El valor predeterminado para DateTime debe ser DateTime.MinValue y no es necesario establecerlo.

CallMeLaNN

Cuestiones relacionadas