这似乎应该非常简单。但是,对于我的生活,我似乎无法在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。我做错了什么?
答案 0 :(得分:5)
查看 HttpCookie 对象的 Expires 属性 - 更多关于此here。我相信你将来会像在msdn网站上的例子一样设置cookie到期日期。由于您在过去设置了日期时间,因此Cookie会自动过期,您永远无法阅读它。