我一直在试验将清除所有在HttpContext.Response
中的cookie的代码。HttpContext.Request.Cookies和HttpContext.Response.Cookies之间的关系
起初,我用这个:
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的Response
,它也被添加到`请求。
如下方法的工作原理:
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
之间的关系?