首页 联系我 返回顶部
实在是想不到问题的所在了
//这个是来写/更新cookie的某一个键的
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);
    }
//这是得到当前cookie一个键的值
    public static string GetCookisValue(string key)
    {
        HttpCookie myCookie = HttpContext.Current.Request.Cookies[_cookie_name];
        if (myCookie != null)
        {
            if (myCookie.Values[key] != null)
                return HttpUtility.UrlDecode(myCookie.Values[key].ToString(),Encoding.Default);
            return "";
        }
        return "";
       
    }

调用该方法:
global.WriteCookies("Name", _txt_username.Text.Trim());
global.WriteCookies("Url", _homepage);

每次只更新了Url,却没有更新Name
跟踪时出现的怪现象是:
跟踪到第一个WriteCookies("Name","");时,更新正常,此时Name已被更新
跟踪到下一个WriteCookies("Url"......);时,却发现更新过的name键又还原了

这是当前页面的cookie

AJSTAT_ok_pages
AJSTAT_ok_times
CommentUser
Name=12345
Url=http%3a%2f%2fwww.123456c78.com
ASP.NET_SessionId

Name一直死活改不了,URl倒是可以更新

怪在调用同一方法,为什么只能更新第二个键?
请大家帮解一下

8 Responses

收起评论
  1. hubro 十一月 22 2006 , 11:10 #1
    hubro
    新增的COOKIE不能马上取到
  2. 幻想曲 十一月 22 2006 , 11:12 #2
    幻想曲
    现在一个现象:
    global.WriteCookies("Name", _txt_username.Text.Trim());
    global.WriteCookies("Url", _homepage);
    这样的时候,Url可以更新,但Name更新不了,
    交换一下位置,
    global.WriteCookies("Url", _homepage);
    global.WriteCookies("Name", _txt_username.Text.Trim());
    Name更新了,而Url更新不了,好像最后写的cookie会覆盖最开始写的...
  3. hubro 十一月 22 2006 , 11:49 #3
    hubro
    cookie[key]==null不等于cookie[key][key]==null
  4. hubro 十一月 22 2006 , 11:50 #4
    hubro
    说反了
    cookie[key][key]==null不等于cookie[key]==null
  5. 幻想曲 十一月 22 2006 , 12:34 #5
    幻想曲
    [code]
    
    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;
    }
    if (cookie1.Values[key] == null)
    {
    cookie1.Values.Add(key, value);
    }
    else
    cookie1.Values[key] = value;
    cookie1.Expires = DateTime.Now.AddYears(1);
    cookie1.Domain = Function.getModule().CookieDomain;
    HttpContext.Current.Response.SetCookie(cookie1);
    return;
    }
    [/code]

    这样也不行哇~~
  6. notus 十一月 22 2006 , 15:40 #6
    notus
    ASP.NET 包含两个内部 Cookie 集合。通过 HttpRequest 的 Cookies 集合访问的集合包含以 Cookie 标头形式由客户端传输到服务器的 Cookie。通过 HttpResponse 的 Cookies 集合访问的集合包含一些新 Cookie,这些 Cookie 在服务器上创建并以 Set-Cookie 标头的形式传输到客户端。

    你把程序换一下
    WriteCookies()
    // HttpCookie cookie1 = HttpContext.Current.Request.Cookies [_cookie_name];
    HttpCookie cookie1 = HttpContext.Current.Response.Cookies [_cookie_name];

    GetCookisValue()
    // HttpCookie myCookie = HttpContext.Current.Request.Cookies [_cookie_name];
    HttpCookie myCookie = HttpContext.Current.Response.Cookies [_cookie_name];

    通过调试发现,你只能暂时改变从客户端获得的cookie,当退出WriteCookies()后,会自动回到以前的状态 :)
    换response的,问题就可以了
  7. 幻想曲 十一月 22 2006 , 16:01 #7
    幻想曲
    Notus出马
    还有啥不能解决的~~
  8. 幻想曲 十一月 22 2006 , 16:02 #8
    幻想曲
    不过照Notus的全改成Response我这反而一个都读不到
    把GetCookiesValue中还原成Request就OK了~
    不过最终没有找到根源..

Write a comment:



(将显示你的Gravatar图标)  



[b][/b] - [i][/i] - [u][/u]- [quote][/quote]

:-/ ^_^ :d :o :kiss: :) :p :se: [yeah] :( :love: :han: :up: :cry: :zzz: o_o

暂时停止交换链接.

评论提交有问题?