我在设置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
有什么想法吗?!
答案 0 :(得分:13)
您正在查看请求 - 其中不包含到期时间。服务器告诉客户端cookie何时到期;客户端也不需要告诉服务器:)
答案 1 :(得分:3)
Response.Cookies
与Request.Cookies
完全不同。
答案 2 :(得分:1)
两件事:第一,如果您在将响应推送到客户端之前查看请求,则请求将不会有您的更新。
第二次,如果您要设置Cookie然后使用Response.Redirect,您的Cookie值可能尚未推送到客户端。在封面下,Response.Redirect调用“Thread.Abort()”,这会杀死线程。