Asp.NET cookies返回null

时间:2011-08-02 16:20:57

标签: asp.net cookies

我正在尝试在点击按钮时保存cookie ...

protected void btn_login_Click(object sender, EventArgs e)
{
   HttpCookie cookie = new HttpCookie("test");
   cookie["work"] = "now";
   cookie.Expires = DateTime.Now + new TimeSpan(1, 0, 0, 0);
   cookie.Domain = ".cookie.com";
   Response.Cookies.Add(cookie);
}

然后在page_load上我正在阅读cookie ...

protected void Page_Load(object sender, EventArgs e)
{
    string a = Response.Cookies["test"]["work"];
}

但它一直无效。我在localhost下运行它,我读到cookie不会保存在localhost下,所以我编辑了我的主机文件 127.0.0.1 test.cookie.com 当我使用Fiddler查看发布到页面标题的内容时。它看起来像这样......

test / work = now test =

所以我可以看到它已经设置但是由于某种原因,当我在其中读取它时返回null。

2 个答案:

答案 0 :(得分:8)

在page_load上将其从Response.Cookies更改为Request.Cookies

Response对象用于发回数据。 Request对象包含传递给您的数据。

示例:

String a = Request.Cookies["test"]["work"];

请注意,如果cookie不存在,那么这将导致空引用异常。

通常你应该这样做:

protected void Page_Load(object sender, EventArgs e) {
  HttpCookie cookie = Request.Cookies["test"];
  String a = String.Empty;

  if (cookie != null) {
    a = cookie["work"];
  }

}

答案 1 :(得分:5)

试试这个

Response.Cookies["work"].Value = "Value1"

请参阅this以获取更多信息。在页面加载时读取cookie尝试

string value = Request.Cookies["work"].Value