Ric*_*ett 6 asp.net cookies response request httpcontext
我一直在尝试清除所有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 });
}
Run Code Online (Sandbox Code Playgroud)
但是,这会导致错误,OutOfMemoryException因为for循环永远不会退出 - 每次添加cookie时Response,它都会被添加到`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 });
}
Run Code Online (Sandbox Code Playgroud)
那么,HttpContext.Request.Cookies和之间的关系到底是什么HttpContext.Response.Cookies?
SLa*_*aks 12
Request.Cookies 包含完整的cookie集,包括浏览器发送到服务器的cookie以及刚刚在服务器上创建的cookie.
Response.Cookies包含服务器将发回的cookie.
此集合开始为空,应更改为修改浏览器的cookie.
文件说明:
ASP.NET包含两个内部cookie集合.通过HttpRequest的Cookies集合访问的集合包含客户端在Cookie标头中传输到服务器的cookie.通过HttpResponse的Cookies集合访问的集合包含在服务器上创建并在Set-Cookie标头中传输到客户端的新cookie.
使用HttpResponse.Cookies集合添加cookie后,即使响应尚未发送到客户端,cookie也会立即在HttpRequest.Cookies集合中提供.
如果您使for循环向后运行,您的第一个代码示例应该有效.
新的cookie将在结束后添加,因此向后循环将忽略它们.
| 归档时间: |
|
| 查看次数: |
5048 次 |
| 最近记录: |