asp.net

.net清除cookies详解

2013-04-23

.net自身具有一个清除Cookie的方法:

Response.Cookies.Clear();

但有些时候发现执行了该语句后Cookie仍然存在,因为该语句并不是物理删除Cookie,这里提供一个让浏览器帮助我们删除Cookie的方法:

1。删除所有Cookie

        int n = Request.Cookies.Count;

        for (int i = 0; i < n; i++)
        {
            HttpCookie myCookie = Request.Cookies[i];
            myCookie.Expires = DateTime.Today.AddDays(-1);
            Response.Cookies.Add(myCookie);
        }

2。删除指定Cookie

       //这里假设指定的Cookie为OtherInfo

        if (Request.Cookies["OtherInfo"] != null)
        {
            HttpCookie myCookie = Request.Cookies["OtherInfo"];
            myCookie.Expires = DateTime.Today.AddDays(-1);
            Response.Cookies.Add(myCookie);
       
        }

下面在说一下.net新增Cookie的方法:

        //添加Cookie,名称为UserInfo

        HttpCookie myCookie = new HttpCookie("UserInfo");
        myCookie.Values["userName"] = Request.QueryString["p"].ToString();
        myCookie.Expires = DateTime.Now.AddMinutes(5);
        Response.Cookies.Add(myCookie);

        //添加Cookie,名称为OtherInfo

        HttpCookie otherCookie = new HttpCookie("OtherInfo");
        otherCookie.Values["otherName"] = Request.QueryString["p"].ToString();
        otherCookie.Expires = DateTime.Now.AddMinutes(5);
        Response.Cookies.Add(otherCookie);

 

 

Request.Cookies.Clear()这个方法并不是删除Cookie
删除 Cookie(即从用户的硬盘中物理移除 Cookie)是修改 Cookie 的一种形式。
由于 Cookie 在用户的计算机中,因此无法将其直接移除。
但是,可以让浏览器来为您删除 Cookie。
该技术是创建一个与要删除的 Cookie 同名的新 Cookie,
并将该 Cookie 的到期日期设置为早于当前日期的某个日期。
当浏览器检查 Cookie 的到期日期时,浏览器便会丢弃这个现已过期的 Cookie。
下面的代码示例演示删除应用程序中所有可用 Cookie 的一种方法:

CODE:

HttpCookie aCookie;
string cookieName; 
int limit = Request.Cookies.Count; 
for (int i = 0; i < limit; i++)

   cookieName = Request.Cookies[i].Name;
   aCookie = new HttpCookie(cookieName); 
   aCookie.Expires = DateTime.Now.AddDays(-1);
   Response.Cookies.Add(aCookie);
}