在注销时删除cookie

Kin*_*ngs 6 asp.net cookies

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

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

并使用cookie作为: -

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

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

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

奇怪...!请告诉我这是什么原因和解决方案.

Aka*_* KC 12

来自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);
}
Run Code Online (Sandbox Code Playgroud)


Agh*_*oub 7

你可以试试

Seesion.Abandon();
Response.Cookies.Clear();
Run Code Online (Sandbox Code Playgroud)

或者也

YourCookies.Expires = DateTime.Now.AddDays(-1d);
Run Code Online (Sandbox Code Playgroud)

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


Erw*_*win 7

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

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

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

如何:删除Cookie