在C#中删除cookie问题

我试图删除一个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时,没有任何变化。 我检查w / FireFox和Chrome的相同行为。 有趣的是,到期日期在浏览器上正确显示,但在代码上显示。

我尝试了以下方法,但没有奏效。

  • 将到期日设置为(明天)并再次将其设置为昨天。
  • 重新启动浏览器(发生不同的浏览器和人)
  • 设置值的东西
  • 使用HttpContext.Current.Request.Cookies [“dcart”] ....
  • Request.Cookies [“dcart”]。Expires = DateTime.Now.AddYears(-10);
  • PS。 该代码不会直接在你的机器上工作,因为你没有cookie。


    解决了

    问题是路径。 我请求的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路径。


    饼干比他们看起来更复杂。 请阅读以下有关如何使用Cookie的明确说明:

    关于饼干的护理和处理

    要删除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,直到浏览器关闭并使其到期。

    使用DateTime.Now.AddYears(-30)的过期日期来删除Cookie的最安全(也是最对称)的方式。

    即正确的方法是

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

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

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

    在我的情况,只是在本地主机工作,但是,当我部署到服务器的问题仍然存在...

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

    之后,为我工作。

    链接地址: http://www.djcxy.com/p/11537.html

    上一篇: Delete cookie issue in C#

    下一篇: Android ListView Universal Image Loader Changes Images on Scroll