在实习中做得一个购物网站项目 ,我用cookie保存用户登录的用户信息和购物车中信息,但是2个cookie分别用2种方法生成,
发现完成购物后清空购物车会把 用户登入的信息也清空掉, 具体不知是什么原因.特来求教!
 
我觉得是这里有问题,请大家来帮我看看:
用户信息保存的Cookie: 
                    Response.Cookies["UserLogin"]["uname"] = this.username.Value.Trim();
                    Response.Cookies["UserLogin"]["uid"] = tuser.UserId.ToString();
                    Response.Cookies["UserLogin"].Expires = DateTime.Now.AddHours(1);
存入用户名和数据库取出的用户编号;购物车保存的信息
   private void UpdateCarInfo(string newCarInfoString)
        {
        cookieCar = new HttpCookie(cookie_car, newCarInfoString);
        cookieCar.Expires = DateTime.Now.AddHours(1);
        
        HttpContext.Current.Response.Cookies.Remove(cookie_car);
        HttpContext.Current.Response.Cookies.Add(cookieCar);
        }
保存 购物车传来的 用户编号和数量清空购物车类
public void Clear()
    {
        
       UpdateCarInfo("");
    }不知为什么清空购物车后 连用户登入的信息也清除了,确切的说是 UserLogin 还在但他的2个子值uname和uid 不见了

解决方案 »

  1.   

    private void UpdateCarInfo(string newCarInfoString)
      {
      cookieCar = new HttpCookie(cookie_car, newCarInfoString);
      cookieCar.Expires = DateTime.Now.AddHours(1);
        
      HttpContext.Current.Response.Cookies.Remove(cookie_car);
      HttpContext.Current.Response.Cookies.Add(cookieCar);
      }每个COOK应该对应不同的name 和 value  cookieName.Expires = DateTime.Now.AddHours(-24); 可以用这种方式清除详细可以参考示例:asp.net 删除cookieHttpCookie cookie1 = Request.Cookies["PPUser"];
    cookie1.Expires = DateTime.Today.AddDays(-10);
    cookie1.Domain = "huo7.com";
    Response.Cookies.Add(cookie1);asp.net 添加cookie   HttpCookie cookie = new HttpCookie("PPUser");
       cookie.Values.Add("UserName",HttpUtility.UrlEncode(userName));
       cookie.Values.Add("Pwd",HttpUtility.UrlEncode(pwd));
       cookie.Expires = DateTime.Now.AddMinutes(expires);
       cookie.Path = "/";
       cookie.Domain = "huo7.com";
       Response.AppendCookie(cookie);
      

  2.   

    Cookie都有name和value
    习惯购物车用session
      

  3.   

    cookie操作
    System.Web.HttpCookie newcookie = new HttpCookie("user");
    newcookie.Values["username"] = "";
    newcookie.Values["password"] = "";
    newcookie.Expires = DateTime.Now.AddDays(15);
    Response.AppendCookie(newcookie);
    System.Web.HttpCookie cookie = Request.Cookies["user"];
    if (cookie != null)
    {
    cookie.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Set(cookie);
    }HttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies[cookiename];  
    if (cookie != null)  
    {  
    cookie.Values.Clear();  
    SetUserCookieExpireTime(cookiename, -1);  
    cookie.Domain = _domain;  
    System.Web.HttpContext.Current.Response.Cookies.Set(cookie);  
    }  
    public static void SetUserCookieExpireTime(string key, int days)  
    {  
    System.Web.HttpContext.Current.Response.Cookies[key].Domain = _domain;  
    System.Web.HttpContext.Current.Response.Cookies[key].Path = _cookiepath;  
    System.Web.HttpContext.Current.Response.Cookies[key].Expires = DateTime.Now.AddDays(days);  
    }  
    购物车使用hashtable等保存