删除C#中的cookie问题

时间:2012-12-06 23:31:57

标签: c# asp.net cookies

我正在尝试删除Cookie,但它不会被删除。这是我尝试使用的代码。

if (Request.Cookies["dcart"] != null)
{
    Response.Write(Request.Cookies["dcart"].Expires);
    // Response 1/1/0001 12:00:00 AM

    Response.Write(Request.Cookies["dcart"].Value);
    // Response 229884

    HttpCookie myCookie = new HttpCookie("dcart");
    myCookie.Expires = DateTime.Now.AddDays(-1d);
    myCookie.Value = "";
    Response.Cookies.Add(myCookie);
}

Response.Write(Request.Cookies["dcart"].Expires);
// Response 1/1/0001 12:00:00 AM
Response.Write(Request.Cookies["dcart"].Value);
// Response 229884

当我再次检索cookie时,没有任何变化。我检查了与FireFox和Chrome相同的行为。有趣的是,到期日期在浏览器上正确显示,但在代码上显示。

我试过以下但没有用。

  • 将到期日设置为(明天)并再次将其设置为昨天。
  • 重新启动浏览器(发生在不同的浏览器和人员身上)
  • 设置值
  • 使用HttpContext.Current.Request.Cookies [“dcart”] ....
  • Request.Cookies [“dcart”]。Expires = DateTime.Now.AddYears(-10);

PS。代码无法直接在您的计算机上运行,​​因为您没有cookie。

3 个答案:

答案 0 :(得分:3)

已解决

问题是路径。我请求的cookie位于“/ store”路径下,而我将响应路径信息发送到“/".

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

当我添加路径信息时,它已被删除。

注意:我使用Firebug来跟踪cookie路径。

答案 1 :(得分:0)

Cookie比他们看起来更棘手。阅读本文以获得有关如何使用cookie的清晰描述:

On The Care and Handling of Cookies

要删除cookie,根据链接的文章,您只需将过期时间设置为过去的任何时间,但不要使用DateTime.MinValue,因为某些浏览器无法正确处理该日期:

  

如果要删除客户端计算机上的cookie,请不要使用   显而易见的Response.Cookies.Remove(“MyCookie”)只是告诉了   cookie不会覆盖客户端的cookie(请参阅下面的更多内容   详细解释),随时设置cookie的Expires属性   在当前时间之前。这将告诉客户端覆盖   带有过期cookie的当前cookie,客户端永远不会发送   它回到服务器。

     

同样,诱惑是使用DateTime.MinValue(01-Jan-0001   00:00:00)删除cookie;再次,这将是一个错误。这个   时间,Netscape 7将按预期工作,但Internet Explorer 6   认为这是一个例外情况。如果是Internet Explorer   收到一个cookie,其中包含它认为是“空白”的到期日期,   它将保留cookie,直到浏览器关闭然后过期   它

     

使用a删除cookie的最安全(也是最对称)的方法   DateTime.Now.AddYears(-30)的到期日。

即。正确的方法是

Request.Cookies["dcart"].Expires = DateTime.Now.AddYears(-30);

答案 2 :(得分:0)

此链接将为您提供一些答案:

https://msdn.microsoft.com/en-us/library/ms178195.aspx

就我而言,只是在localhost中工作,但是,当我部署到服务器时,问题仍然存在......

HttpCookie中,您可以尝试设置Expire参数DateTime.Now.AddDays(-1d),(将过期日期设置为昨天)并设置属性Secure = false

在此之后,为我工作。