代码之家  ›  专栏  ›  技术社区  ›  Anders

当尝试读取时,cookie未设置?

  •  0
  • Anders  · 技术社区  · 15 年前

    你有个奇怪的问题。

    我创建了一个控件,该控件将记录插入数据库并将cookie写入用户的计算机。下面是编写代码段的cookie:

    protected void CreateCookie(Guid id, DateTime expires)
    {
        var oCookie = new HttpCookie("gsow");
    
        oCookie.Value = id.ToString();
        oCookie.Expires = expires;
    
        HttpContext.Current.Response.Cookies.Add(oCookie);
    }
    

    很简单,没什么花哨的。ID是从将条目写入数据库的函数传递的,这个ID是动态生成的。下面是我读cookie的代码:

    protected void Page_Load(object sender, EventArgs e)
    {
    
        var oCookie = HttpContext.Current.Response.Cookies["gsow"];
    
        output.Text = "I am Here<br />";
    
        if (oCookie != null)
            output.Text += oCookie.Value;
        else
            output2.Text = "No Cookie.";
    }
    

    再一次,非常简单。以下是我已采取并重复多次的步骤:

    1. 通过启动第一页创建cookie/db条目。
    2. 验证是否存在cookie/db条目(在这个步骤中,通过chrome的cookie管理器进行检查)
    3. 启动第二页

    一旦我加载了第二个页面,这个页面会显示出我之前设置的ID,cookie仍然存在,但它是未设置的。

    以下是加载第一页后cookie的屏幕截图:

    alt text

    一旦我载入第二页:

    alt text

    所以从我所看到的来看,当我加载第二页时,cookie的值/到期时间会被去掉。有人知道为什么会这样吗?

    谢谢

    1 回复  |  直到 15 年前
        1
  •  3
  •   JustLoren    15 年前

    据我所知,您应该使用请求对象而不是响应对象来检索cookie。