如何从CookieCollection中删除所有过期的cookie?

时间:2011-10-18 11:45:41

标签: c# httpwebrequest

如何从CookieCollection中删除所有过期的cookie?

3 个答案:

答案 0 :(得分:2)

试试这个。

var cookies = Request.Cookies;
foreach (HttpCookie cookie in cookies)
{
    if (cookie.Expires < DateTime.Now)
    {
        Request.Cookies.Remove(cookie.Name);
    }
}

请注意excerpt from MSDN

  

调用Cookies集合的Remove方法会删除cookie   从服务器端的集合,所以不会发送cookie   给客户。但是,该方法不会从中删除cookie   客户端,如果它已经存在那里。

答案 1 :(得分:1)

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

if (Request.Cookies["UserSettings"] != null)
{
    HttpCookie myCookie = new HttpCookie("UserSettings");
    myCookie.Expires = DateTime.Now.AddDays(-1);//add -1 days
    Response.Cookies.Add(myCookie);
}

答案 2 :(得分:0)

删除Cookie的方法是将过期日期更改为已经过去的某些内容.. 但是在第一种情况下永远不会从浏览器发送过期的Cookie ... < / p>