尝试读取时Cookie未被设置?

时间:2009-07-27 17:28:34

标签: c# asp.net cookies

给你一个奇怪的问题。

我创建了一个控件,将记录插入数据库并将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. 启动第二页
  4. 一旦我加载第二页,它应该吐出我之前设置的ID,cookie仍然存在,但它是Unset。

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

    alt text

    一旦我加载第二页:

    alt text

    因此,从我所看到的,当我加载第二页时,cookie的值/到期被剥离。任何人都对为什么会这样做有任何想法?

    由于

1 个答案:

答案 0 :(得分:3)

据我所知,您应该使用Request对象而不是Response对象检索cookie。