【发布时间】:2012-03-05 23:47:01
【问题描述】:
我正在 ASP.NET 应用程序的一个页面中创建一个 cookie,我想在另一个页面中删除它。我该怎么做?
【问题讨论】:
我正在 ASP.NET 应用程序的一个页面中创建一个 cookie,我想在另一个页面中删除它。我该怎么做?
【问题讨论】:
Microsoft: How To Delete a Cookie
您不能直接删除用户计算机上的 cookie。但是,您可以通过将 cookie 的到期日期设置为过去的日期来指示用户的浏览器删除 cookie。下次用户向设置 cookie 的域或路径中的页面发出请求时,浏览器将确定 cookie 已过期并将其删除。
为 cookie 分配一个过去的过期日期
以下代码示例显示了如何在 cookie 上设置过去的过期日期。
if (Request.Cookies["UserSettings"] != null)
{
HttpCookie myCookie = new HttpCookie("UserSettings");
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);
}
注意:调用 Cookies 集合的 Remove 方法会从服务器端的集合中移除 cookie,因此不会将 cookie 发送到客户端。但是,如果 cookie 已经存在,该方法不会从客户端删除它。
【讨论】:
Expires 从未设置过)?调用Remove方法后,什么时候完全去掉?在一个页面周期中,我应该什么时候调用 remove 来立即影响客户端?
您是否尝试过让 cookie 过期?
protected void btnDelete_Click(object sender, EventArgs e)
{
Response.Cookies["cookie_name"].Expires = DateTime.Now.AddDays(-1);
}
【讨论】:
if (Request.Cookies["MyCookie"] != null)
{
HttpCookie myCookie = new HttpCookie("MyCookie");
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);
}
【讨论】:
首先,您必须将 cookie 的到期日期设置为之前的日期。
例如:
HttpCookie newCookie = new HttpCookie("newCookie");
newCookie.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(newCookie);
现在仅这样做不会有帮助,因为 cookie 不会被物理删除。您必须删除 cookie。
if (newCookie.Expires < DateTime.Now)
{
Request.Cookies.Remove("newCookie");
}
给你。这适用于解决方案中的任何页面。
【讨论】: