ASP.NET:Cookie,未重置值,cookie未被删除

时间:2010-10-07 13:31:59

标签: asp.net cookies

我有一个名为“g”的cookie,其值为“y”或“n”

我这样设置:

Response.Cookies("g").Value = "y"
Response.Cookies("g").Expires = DateTime.Now.AddHours(1)

我改变它:

Request.Cookies("g").Value = "n"

我试图像这样摧毁它

Response.Cookies("g").Expires = DateTime.Now.AddHours(-1)

Cookie设置正常,但我无法更改其值或销毁它

谢谢!

2 个答案:

答案 0 :(得分:4)

尝试以这种方式删除它:

if (Request.Cookies["g"] != null)
{
    HttpCookie myCookie = new HttpCookie("g");
    myCookie.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(myCookie);
}

我认为如果您尝试创建cookie并将其添加到响应中,它应该可以正常工作。

您希望将新Cookie添加到具有相同名称的响应中。我建议回去一天而不是一小时。

要更改cookie的值,请执行以下操作:

if (Request.Cookies["g"] != null)
{
    HttpCookie myCookie = new HttpCookie("g");
    myCookie.Expires = DateTime.Now.AddHours(1);
    myCookie.Value = "n";
    Response.Cookies.Add(myCookie);
}

这些示例需要注意的重要一点是,我们正在观察只读请求集合以查看其中已有的内容,然后我们通过添加新cookie来替换那里的那个以进行更改或删除之前。

答案 1 :(得分:1)

您无法更改请求Cookie,您只能在回复中“重新设置”它。因此,您需要在Response中设置相同的cookie。

然而,Expire-trick应该可行,但有时DST(夏令时)可能会混淆浏览器。您是否尝试使用非常旧的DateTime(如1970年)以使cookie过期?