2009-03-10 7 views
6

Interesuje mnie, jak zrobić regularny obiekt HttpCookie w pliku cookie, który wygasa pod koniec sesji. Nie jestem zainteresowany kimś showing me HttpContext.Session. Jak wygląda plik cookie sesji w nagłówkach odpowiedzi w porównaniu do zwykłego pliku cookie? Jak mogę zmodyfikować HttpCookie, aby wygasać po zakończeniu sesji? Dzięki!.net HttpCookie pytania dotyczące ciastek klasy/sesji

Odpowiedz

14

Plik cookie sesji jest tylko plikiem cookie, który nie ma ustalonej daty ważności.

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

czyli

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

Plik cookie z datą ważności DateTime.MinValue (1/1/0001) wygaśnie na końcu sesji. Jest to domyślna data wygaśnięcia pliku cookie w asp.net.

Możesz wymusić usunięcie pliku cookie z klienta, ustawiając datę wygaśnięcia na coś przed "teraz" (DateTime.Now.AddDays (-1d)), w którym to przypadku zostanie usunięty po trafieniu w klienta .

Gdybyśmy mieli typy zerowalne z powrotem po zakodowaniu HttpCookie, domyślam się, że data zerowa byłaby równoznaczna z plikiem cookie opartym na sesjach, a cokolwiek innego przełożyłoby się na wartość wygaśnięcia, ale tak nie jest.

+0

Wygląda na to nie ustawienie wygasania (w nagłówkach odpowiedzi) ma ten sam efekt? – Shawn

+0

Nie przetestowałem tego, więc nie mogę powiedzieć na pewno. Ostatnio spędziłem dużo czasu zajmując się biblioteką plików cookie dla naszego projektu. Osobiście wolę owoce w dzisiejszych czasach. – andleer

+0

Chętnie udostępnię bibliotekę w pewnym momencie. – andleer

5

ważności cookie cookie

  • Session - Wygasa data powinna być DateTime.MinValue który jest 1/1/0001 00:00:00
  • Zwykłe ciasteczko (ograniczone w czasie) - Data ważności jest dowolną przyszłą datą równą lub większą niż aktualna DateTime.Now.
  • Usunięte ciasteczko - w dowolnym czasie między DateTime.MinValue i DateTime.Now.

Aby zmienić plik cookie na plik cookie sesji, wystarczy przypisać wartość minimalną.

httpCookie.Expires = DateTime.MinValue; 

Jeśli Twój plik cookie jest nowy. Domyślną wartością dla DateTime powinna być DateTime.MinValue i nie trzeba jej ustawiać.

CallMeLaNN

Powiązane problemy