2009-03-10 33 views
6

Tôi quan tâm về cách tạo đối tượng HttpCookie thông thường thành cookie hết hạn vào cuối phiên. Tôi không quan tâm đến ai đó showing me HttpContext.Session. Cookie phiên trông như thế nào trong tiêu đề phản hồi so với cookie bình thường? Làm thế nào tôi có thể sửa đổi HttpCookie để hết hạn vào cuối phiên? Cảm ơn!.net HttpCookie lớp/phiên cookie câu hỏi

Trả lời

14

Cookie phiên chỉ là cookie không có bất kỳ ngày hết hạn nào được đặt.

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

hay:

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

Cookie có thời gian hết hạn là DateTime.MinValue (1/1/0001) sẽ hết hạn vào cuối phiên. Đây là ngày hết hạn mặc định cho cookie trong asp.net.

Bạn có thể buộc cookie phải được xóa khỏi ứng dụng khách bằng cách đặt ngày hết hạn thành một cái gì đó trước "now" (DateTime.Now.AddDays (-1d)) trong trường hợp này nó sẽ bị xóa khi nó chạm vào ứng dụng khách .

Nếu chúng ta có các kiểu nullable trở lại khi HttpCookie được mã hóa, thì một ngày tháng sẽ tương đương với cookie dựa trên phiên và bất kỳ thứ gì khác sẽ chuyển thành giá trị hết hạn nhưng điều này không đúng.

+0

Dường như không đặt hết hạn (trong tiêu đề phản hồi) có cùng tác dụng? – Shawn

+0

Tôi chưa thử nghiệm vì vậy tôi không thể nói chắc chắn. Gần đây, đã dành rất nhiều thời gian giao dịch với thư viện cookie cho khung dự án của chúng tôi. Cá nhân tôi thích trái cây những ngày này. – andleer

+0

Tôi rất vui khi chia sẻ thư viện vào một thời điểm nào đó. – andleer

5

hết hạn của cookie:

  • phiên Cookie - Hết hạn ngày nên DateTime.MinValue đó là 1/1/0001 00:00:00
  • Cookie thông thường (Thời hạn) - Ngày hết hạn là bất kỳ ngày nào trong tương lai bằng hoặc lớn hơn DateTime.Now hiện tại.
  • Cookie đã xóa - bất kỳ lúc nào giữa DateTime.MinValue và DateTime.Now.

Để thay đổi cookie thành cookie phiên, chỉ cần chỉ định MinValue.

httpCookie.Expires = DateTime.MinValue; 

Nếu cookie của bạn là cookie mới. Giá trị mặc định cho DateTime phải là DateTime.MinValue và không cần thiết lập.

CallMeLaNN