Stai parlando di un cookie non persistente. Di default asp.net invia i cookies in questo modo. La principale differenza tra loro è che un cookie persistente ha un valore di scadenza impostato.
Quindi, se non si desidera che il cookie persista, non impostare il valore di scadenza.
Detto questo, il cookie rimarrà in memoria fino a quando il browser non sarà effettivamente chiuso. Diciamo che navigano sul tuo sito e imposti un cookie non persistente. Fanno cose e sfogliano. Successivamente, utilizzando la stessa istanza del browser, tornano al tuo sito. Il cookie sarà ancora lì.
Ora, se hanno chiuso il browser in qualsiasi momento, il cookie verrebbe svuotato.
Il punto è, non impostare l'intestazione di scadenza. Soprattutto non a quando scade la data della sessione. Le date delle sessioni sono in genere solo 20 minuti circa in futuro, ma la data di scadenza viene ripristinata mentre l'utente naviga nel tuo sito.
aggiornamento ===== =====
Ho usato il seguente codice per il test:
protected void Page_Load(object sender, EventArgs e) {
if (!Page.IsPostBack) {
HttpCookie c = Request.Cookies["test"];
if (c != null) {
Response.Write(String.Format("test value is {0} <br />", c.Value));
}
} else {
HttpCookie c = new HttpCookie("test");
c.Value = "HERE IT IS";
Response.Cookies.Add(c);
}
}
protected void Button1_Click(object sender, EventArgs e) {
Response.Write("clicked<br />");
}
il semplice file aspx aveva un pulsante che ha sparato tale gestore Button1_Click. Quando inizialmente lo sfoglio utilizzando uno dei browser più recenti (ad esempio, firefox, chrome) non è presente alcun cookie. Dopo aver fatto clic sul pulsante, viene impostato un cookie. Quindi ho chiuso completamente il browser, ho riaperto e sono tornato al sito. In tutti i casi il cookie era sparito.
http://stackoverflow.com/questions/12582689/delete-cookies-on-session-timeout – Shurmajee