如何在asp.net c#中从浏览器中删除cookie,SO答案不起作用

时间:2012-09-04 16:33:13

标签: c# asp.net cookies

我正在尝试在用户注销时使用C#删除Cookie。此处列出的代码建议:remove cookies from browser不起作用。我把他们中的几个放在一起绝望,他们没有工作。

if (Request.Cookies["loginidcookie"] != null)
{
    HttpCookie myCookie = new HttpCookie("loginidcookie");
    myCookie.Value = String.Empty;
    myCookie.Expires = DateTime.Now.AddDays(-1d);
    Response.Cookies.Add(myCookie);
    Response.Cookies.Remove("loginidcookie");
}
Response.Redirect("logout.aspx");

因此,我不仅用空字符串覆盖cookie的值,我将其设置为昨天到期并将其从cookie列表中删除。然而,当我运行此代码然后点击后退按钮并重新加载时,cookie仍然存在其原始值。那我怎么摆脱它?

谢谢

4 个答案:

答案 0 :(得分:4)

请改为尝试:

string cookieName = "loginidcookie";
if (Request.Cookies[cookieName ] != null)
{
    var myCookie = new HttpCookie(cookieName);
    myCookie.Expires = DateTime.Now.AddDays(-1d);
    Response.Cookies.Add(myCookie);
}
Response.Redirect("logout.aspx", false);

注意(from here):

  

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

答案 1 :(得分:2)

您正在添加Cookie,然后在发送响应之前将其从集合中删除,这样您实际上什么都不做。

HttpCookie myCookie = new HttpCookie("loginidcookie");
... and then below
Response.Cookies.Add(myCookie);
Response.Cookies.Remove("loginidcookie");

如果您将cookie更改为昨天过期,则需要leave该集合中的cookie,以便浏览器在看到cookie已更新过去的过期日期后负责删除它。换句话说,请勿拨打Response.Cookies.Remove("loginidcookie");

答案 2 :(得分:0)

尝试RedFilter的解决方案,但使用Server.Transfer()或Server.TransferRequest()而不是Response.Redirect(),似乎并不总是让那些cookie响应由于可能的错误而发生。

答案 3 :(得分:-1)

关闭浏览器后,您是否正在检查Cookie?或者在同一个浏览器中重新加载页面?

如果您在同一浏览器中打开该页面,您将看到已过期的Cookie,但如果您打开新浏览器并尝试再次访问该页面,则无法获取该Cookie。