带有Expires set的HttpCookie返回DateTime.MinValue

时间:2009-11-04 21:50:36

标签: c# asp.net-mvc cookies

我在设置cookie时看到一些奇怪的东西......

动作:

string cookieName = "foo";
string cookieValue = "bar";

//Set a cookie in the response, along with the Expires.
this.ControllerContext.HttpContext.Response.Cookies.Add(
  new HttpCookie(cookieName, cookieValue)
  {
    Expires = DateTime.Now.AddHours(1)
  }
);

调试时,我可以看到这个新cookie将来会有一个小时到期,然而,当我在视图中查看cookie时,到期时间不存在......

查看:

<%= Request.Cookies.Get("foo").Value %>

返回bar

<%= Request.Cookies.Get("foo").Expires %>

返回01/01/0001 00:00:00

有什么想法吗?!

3 个答案:

答案 0 :(得分:13)

您正在查看请求 - 其中不包含到期时间。服务器告诉客户端cookie何时到期;客户端也不需要告诉服务器:)

答案 1 :(得分:3)

Response.CookiesRequest.Cookies完全不同。

答案 2 :(得分:1)

两件事:第一,如果您在将响应推送到客户端之前查看请求,则请求将不会有您的更新。

第二次,如果您要设置Cookie然后使用Response.Redirect,您的Cookie值可能尚未推送到客户端。在封面下,Response.Redirect调用“Thread.Abort()”,这会杀死线程。