public static void WriteCookies(string key, string value)
    {
        if (value != null)
            value = HttpUtility.UrlEncode(value, Encoding.Default);
        HttpCookie cookie1 = HttpContext.Current.Request.Cookies[_cookie_name];
        if (cookie1 == null)
        {
            cookie1 = new HttpCookie(_cookie_name);
            cookie1.Values.Add(key, value);
            cookie1.Expires = DateTime.Now.AddYears(1);
            cookie1.Domain = Function.getModule().CookieDomain;
            HttpContext.Current.Response.Cookies.Add(cookie1);
            return;
        }
        cookie1.Values[key] = value;
        cookie1.Expires = DateTime.Now.AddYears(1);
        cookie1.Domain = Function.getModule().CookieDomain;
        HttpContext.Current.Response.Cookies.Set(cookie1);
    }
用下面的代码调用这个方法时
ttt.WriteCookies("Name", _txt_username.Text.Trim());
ttt.WriteCookies("Url", _homepage);
只更新了url,却没有更新Name,这是为什么?Name这个键在Cookie中是存在的

解决方案 »

  1.   

    楼上的朋友是在IE下还是FF下测试的?
      

  2.   

    不,我用IE不行。
    比如我现在cookie中的Name为123
    url为http://www.csdn.net
    在修改时
    ttt.WriteCookies("Name", "abcdefg");
    ttt.WriteCookies("Url", "asaa");
    查看cookie时,name没有改,而url 改了
    百思不得其解啊
      

  3.   

    我刚才把我所有的cookies全删了,就出现你说的问题了。
      

  4.   

    好像没白了点,
    单独写一个没问题。两个同时写,第二个的更改会盖掉第一个。因为你的coolkie是从request的cookie中取的,第二次修改也是从request中取的。
    所以第一次的修改被跳过了。
      

  5.   

    也就是说Response.Cookie已经修改了,在页面没有重新发回之前,Request的cookie是不会变的。所以这个程序要修改
      

  6.   

    在方法的最后一行加上HttpContext.Current.Request.Cookies.Set(cookie1);
    把Request的cookie也改掉,好了睡觉。