Tôi đã thử nghiệm mã sẽ xóa tất cả cookie trong một số HttpContext.Response
.Mối quan hệ giữa HttpContext.Request.Cookies và HttpContext.Response.Cookies
Ban đầu, tôi đã sử dụng này:
DateTime cookieExpires = DateTime.Now.AddDays(-1);
for (int i = 0; i < HttpContext.Request.Cookies.Count; i++)
{
HttpContext.Response.Cookies.Add(
new HttpCookie(HttpContext.Request.Cookies[i].Name, null) { Expires = cookieExpires });
}
Tuy nhiên, điều này sẽ lỗi với một OutOfMemoryException
vì for
vòng lặp không bao giờ thoát ra - mỗi khi bạn thêm một cookie đến Response
, nó cũng được thêm vào 'Yêu cầu .
Phương pháp sau đây hoạt động:
DateTime cookieExpires = DateTime.Now.AddDays(-1);
List<string> cookieNames = new List<string>();
for (int i = 0; i < HttpContext.Request.Cookies.Count; i++)
{
cookieNames.Add(HttpContext.Request.Cookies[i].Name);
}
foreach (string cookieName in cookieNames)
{
HttpContext.Response.Cookies.Add(
new HttpCookie(cookieName, null) { Expires = cookieExpires });
}
Vì vậy, những gì chính xác là mối quan hệ giữa HttpContext.Request.Cookies
và HttpContext.Response.Cookies
?