互联网解决方案咨询

梦想有多大路就会有多远:作一颗IT量子
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

ASP.NET清除Cookie的问题

Posted on 2008-04-05 19:50  互联网粒子  阅读(5373)  评论(0编辑  收藏  举报
在开发ASP。NET 应用程序时,通常会遇到登陆退出时清除Cookie无错误但就是清除不了Cookie,可以在firefox中看到Cookie并未清除。
通常我们会把一些常用的方法写到类库中进行重用,这对于开发来说是一件不错的做法,提高代码重用性,提高工作效率.
        public static bool DeleteCookie(string CookieName)
        {
            System.Web.HttpContext.Current.Response.Cookies.Remove(CookieName);
            return true;
        }
//当用尝试用上面的方法去清除登录的Cookie时,发现并没有清除我的Cookie,重刷页面时登录状态还在
//这个问题花了不少时间来调试,百般无奈,最后找到了一个方法可以解决

//strPageDomain 主要是应用在当Cookie需要跨域时,用来访问strPageDomain这个域名下的Cookie
HttpCookie MyCo;
           if (_strPageDomain != null && _strPageDomain != "")
           {
               MyCo = HttpContext.Current.Request.Cookies["UserID"];
               if (System.Web.HttpContext.Current.Request.ServerVariables.ToString().IndexOf(_strPageDomain) >= 0 && MyCo != null)
               {
                   MyCo.Domain = _strPageDomain;
                   MyCo.Expires = DateTime.Now.AddHours(-24); //关键是这一句
                   HttpContext.Current.Response.Cookies.Add(MyCo);

               }
           }
           else
           {
               MyCo = HttpContext.Current.Request.Cookies["UserID"];
               if (MyCo != null)
               {
                   MyCo.Expires = DateTime.Now.AddHours(-48);                  
                   HttpContext.Current.Response.Cookies.Add(MyCo);
               }

           }
在今后的开发中,需注意在网站需要用到一个Cookie,add cookie时需先把存在的delet,然后再add,有时发现add同一个名称的cookie时并不是把旧的Cookie复盖。