Связь между HttpContext.Request.Cookies и HttpContext.Response. Файлы cookie

Я экспериментировал с кодом, который очищает все файлы cookie в HttpContext.Response .

Изначально я использовал это:

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 });
}

Однако это приведет к ошибке OutOfMemoryException , потому что цикл for никогда не завершается - каждый раз, когда вы добавляете cookie в ответ , он также добавляется в `Request.

Работает следующий подход:

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 });
}

Итак, какова именно связь между HttpContext.Request.Cookies и HttpContext.Response.Cookies ?

6
задан Richard Everett 23 November 2010 в 16:41
поделиться