2009-03-10 11 views
6

Sono interessato a come creare un oggetto regolare HttpCookie in un cookie che scade al termine di una sessione. Non sono interessato a qualcuno showing me HttpContext.Session. Come appare un cookie di sessione nelle intestazioni di risposta rispetto a un cookie normale? Come posso modificare uno HttpCookie in scadenza alla fine di una sessione? Grazie!.net Domande su cookie di classe/sessione HttpCookie

risposta

14

Un cookie di sessione è solo un cookie che non ha una data di scadenza impostata.

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

o:

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

Un cookie con scadenza di DateTime.MinValue (1/1/0001) scadrà alla fine della sessione. Questa è la data di scadenza predefinita per un cookie in asp.net.

È possibile forzare l'eliminazione immediata di un cookie dal client impostando la data di scadenza su qualcosa prima di "now" (DateTime.Now.AddDays (-1d)) nel qual caso verrà eliminato quando colpisce il client .

Se avessimo i tipi nullable indietro quando HttpCookie è stato codificato, la mia ipotesi è che una data nullo equivale a un cookie basato sulla sessione e qualsiasi altra cosa si tradurrebbe nel valore di scadenza ma questo non è il caso.

+0

Sembra non fissando una scadenza (nelle intestazioni di risposta) ha lo stesso effetto? – Shawn

+0

Non l'ho provato, quindi non posso dirlo con certezza. Recentemente ho trascorso molto tempo a gestire una libreria di cookie per il nostro framework di progetto. Personalmente preferisco la frutta in questi giorni. – andleer

+0

Sarei felice di condividere la libreria ad un certo punto. – andleer

5

Scadenza del biscotto: biscotto

  • Session - Scade data dovrebbe essere DateTime.MinValue che è 1/1/0001 00:00:00
  • Normale cookie (Tempo limitato) - La data di scadenza è una data futura uguale o superiore al DateTime.Ora corrente.
  • Cookie cancellato - in qualsiasi momento tra DateTime.MinValue e DateTime.Now.

Per modificare il cookie in cookie di sessione, è sufficiente assegnare MinValue.

httpCookie.Expires = DateTime.MinValue; 

Se il cookie è nuovo. Il valore predefinito per DateTime dovrebbe essere DateTime.MinValue e non è necessario impostare.

CallMeLaNN