Domanda

Sono interessato a come trasformare un normale oggetto HttpCookie in un cookie che scade al termine di una sessione. Non mi interessa che qualcuno mi mostri HttpContext.Session . Come appare un cookie di sessione nelle intestazioni di risposta rispetto a un normale cookie? Come posso modificare un HttpCookie per scadere alla fine di una sessione? Grazie!

È stato utile?

Soluzione

Un cookie di sessione è solo un cookie per il quale non è stata impostata alcuna data di scadenza.

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

o

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

Altri suggerimenti

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

Puoi forzare la cancellazione immediata di un cookie dal client impostando la data di scadenza su qualcosa che precede " ora " (DateTime.Now.AddDays (-1d)) nel qual caso verrà eliminato quando colpisce il client.

Se avessimo tipi nulli al momento della codifica di HttpCookie, la mia ipotesi è che una data nulla corrisponderebbe a un cookie basato sulla sessione e qualsiasi altra cosa si tradurrebbe nel valore di scadenza, ma non è così.

Scadenza del cookie:

  • Cookie di sessione: la data di scadenza deve essere DateTime.MinValue che è 1/1/0001 00:00:00
  • Cookie normale (tempo limitato) - La data di scadenza è qualsiasi data futura uguale o superiore alla data corrente. Ora.
  • Cookie eliminato: 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 tuo cookie è nuovo. Il valore predefinito per DateTime dovrebbe essere DateTime.MinValue e non è necessario impostarlo.

CallMeLaNN

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top