在ASP.NET MVC中创建Cookie

3

这似乎应该很简单。然而,我却无法在ASP.NET MVC中创建cookie。目前,我有以下代码:

DateTime lastActivityDate = DateTime.UtcNow;
if (Request.Browser.Cookies)
{
  HttpCookie lastActivityCookie = new HttpCookie(COOKIE_LAST_ACTIVITY, lastActivityDate.ToShortDateString());
  lastActivityCookie.Expires = DateTime.Now.AddMonths(-12);                    
  this.ControllerContext.HttpContext.Response.Cookies.Add(lastActivityCookie);
}

我设置了一个断点,并注意到似乎已经添加了cookie。(是的,我正在进入Request.Browser.Cookies块)。然后我尝试使用以下方式检索cookie:

DateTime lastActivity = DateTime.UtcNow.AddDays(-7);        // Default to the past week

HttpCookie lastActivityCookie = Request.Cookies[COOKIE_LAST_ACTIVITY];
if (lastActivityCookie != null)
{
  DateTime temp = DateTime.UtcNow;
  if (String.IsNullOrWhiteSpace(lastActivityCookie.Value) == false)
  {
    if (DateTime.TryParse(lastActivityCookie.Value, out temp))
      lastActivity = temp;
  }
}

很遗憾,lastActivityCookie总是为null。此外,当我在Chrome的“资源”选项卡中查看时,我看到了cookie分支,然而我正在尝试创建的cookie未列出。不过,还有另外两个cookie被列出来,其中包括.ASPXAUTH cookie。我做错了什么?


为什么要把cookie的过期日期设置为现在时间减去12个月?据我所知,浏览器会自动删除过期的cookie,因此这样设置甚至不会生效。 - CodeZombie
1个回答

5

查看HttpCookie对象的Expires属性 - 更多信息请参见此处。我认为您应该像msdn网站上的示例一样将cookie过期日期设置在未来。因为您将日期时间设置在过去,所以cookie会自动过期,并且您将无法再读取它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接