2009-03-10 8 views
6

Ich bin daran interessiert, wie ein reguläres Objekt HttpCookie in ein Cookie, das am Ende einer Sitzung abläuft, zu machen. Ich interessiere mich nicht für jemanden showing me HttpContext.Session. Wie sieht ein Sitzungscookie in den Antwortheadern im Vergleich zu einem normalen Cookie aus? Wie kann ich eine HttpCookie ändern, um am Ende einer Sitzung abzulaufen? Vielen Dank!.net HttpCookie Klassen-/Session-Cookie-Fragen

Antwort

14

Ein Sitzungscookie ist nur ein Cookie, für das kein Ablaufdatum festgelegt ist.

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

oder:

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

Ein Cookie mit Ablaufdatum DateTime.MinValue (1/1/0001) läuft am Ende der Sitzung ab. Dies ist das Standardverfallsdatum für einen Cookie in asp.net.

Sie können das sofortige Löschen eines Cookies vom Client erzwingen, indem Sie das Ablaufdatum vor "jetzt" setzen (DateTime.Now.AddDays (-1d)). In diesem Fall wird es gelöscht, wenn es den Client erreicht .

Wenn wir NULL-Typen zurückbekommen hatten, als HttpCookie kodiert war, würde ich meinen, dass ein Null-Datum einem sitzungsbasierten Cookie gleichkäme und alles andere würde in den Ablaufwert übersetzt, aber das ist nicht der Fall.

+0

Es sieht aus wie kein Ablauf (in der Antwort-Header) Einstellung hat die gleiche Wirkung? – Shawn

+0

Ich habe das nicht getestet, also kann ich nicht sicher sagen. Habe erst kürzlich viel Zeit mit einer Cookie-Bibliothek für unser Projektrahmenwerk verbracht. Persönlich bevorzuge ich heutzutage Früchte. – andleer

+0

Ich würde mich freuen, die Bibliothek irgendwann zu teilen. – andleer

5

Verfall von cookie:

  • Session Cookie - Gültig sollten Datum DateTime.MinValue sein, die 1.1.0001 00.00.00
  • ist
  • Normaler Cookie (Zeitlimitiert) - Das Ablaufdatum ist ein zukünftiges Datum gleich oder größer als das aktuelle DateTime.Now.
  • Gelöschter Cookie - jederzeit zwischen DateTime.MinValue und DateTime.Now.

Um den Cookie in Sitzungscookie zu ändern, weisen Sie einfach MinValue zu.

httpCookie.Expires = DateTime.MinValue; 

Wenn Ihr Cookie neu ist. Der Standardwert für DateTime sollte DateTime.MinValue sein und muss nicht festgelegt werden.

CallMeLaNN