.net Domande sui cookie di classe / sessione HttpCookie
-
08-07-2019 - |
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!
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