Eksperymentowałem z kodem, który wyczyści wszystkie pliki cookie w HttpContext.Response
.Relacje między HttpContext.Request.Cookies i HttpContext.Response.Cookies
Początkowo używałem to:
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 });
}
Jednak to będzie błąd z obiektem OutOfMemoryException
ponieważ pętla for
nigdy nie wychodzi - za każdym razem dodać plik cookie do Response
, to również zostanie dodany do `Zamówienie .
następujące podejście działa:
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 });
}
Więc, co dokładnie jest związek między HttpContext.Request.Cookies
i HttpContext.Response.Cookies
?