Ho sperimentato codice che cancellerà tutti i cookie in un HttpContext.Response
.Relazione tra HttpContext.Request.Cookies e HttpContext.Response.Cookies
Inizialmente, ho usato questo:
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 });
}
Tuttavia, questo errore con un OutOfMemoryException
perché il ciclo for
non esce - ogni volta che si aggiunge un cookie al Response
, ma anche viene aggiunto al `Request .
il seguente approccio funziona:
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 });
}
Quindi, qual è esattamente il rapporto tra HttpContext.Request.Cookies
e HttpContext.Response.Cookies
?