11

在主页的页面加载中,我设置了这样的 cookie:-

if (abc == true)
{
    HttpCookie cookie = new HttpCookie("Administrator");
    cookie.Value = "Admin";
    cookie.Expires = DateTime.Now.AddDays(-1);
    Response.SetCookie(cookie);
}

并将cookie用作:-

if (Request.Cookies["Administrator"] != null)
{
    if (Request.Cookies["Administrator"].Value == "Admin")
        //some code
}

注销时,我希望此 cookie 过期或被删除。所以我写了: -Seesion.Abandon();

现在,即使在我注销后,当我重新登录到主页时.. 该行Request.Cookies["Administrator"]仍然不是空的。

奇怪的...!请让我知道这是什么原因和解决方案。

4

4 回答 4

17

来自MSDN 文档

您不能直接删除用户计算机上的 cookie。但是,您可以通过将 cookie 的到期日期设置为过去的日期来指示用户的浏览器删除 cookie。下次用户向设置 cookie 的域或路径中的页面发出请求时,浏览器将确定 cookie 已过期并将其删除。

你可以这样做:

if (Request.Cookies["Administrator"] != null)
{
    HttpCookie myCookie = new HttpCookie("Administrator");
    myCookie.Expires = DateTime.Now.AddDays(-1d);
    Response.Cookies.Add(myCookie);
}
于 2012-10-10T18:14:24.563 回答
9

你可以试试

Session.Abandon();
Response.Cookies.Clear();

或者也

YourCookies.Expires = DateTime.Now.AddDays(-1d);

链接:http: //msdn.microsoft.com/en-us/library/ms178195%28v=vs.100%29.aspx

于 2012-10-10T18:13:54.397 回答
9

您必须指定过去的到期日期才能删除特定的 cookie:

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

更多信息可以在这篇 msdn 文章中找到:

如何:删除 Cookie

于 2012-10-10T18:14:13.557 回答
4

在我看来,你的线

cookie.Expires = DateTime.Now.AddDays(-1);

应该立即使您的 cookie 过期。

如果您只是输入错误,那么好消息!您可以通过将过期日期设置为过去来使您的 cookie 过期。

于 2012-10-10T18:15:50.070 回答