2013-02-23 69 views
3

这看起来应该是非常简单的。然而,对于我来说,我似乎无法在ASP.NET MVC中创建cookie。目前,我有以下代码:在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

为什么将cookie的过期日期设置为Now-12month? AFAIK一个过去过期的cookie应该被浏览器删除,所以它是有道理的,甚至没有设置。 – CodeZombie 2013-02-23 14:54:35

回答

5

看那过期的HttpCookie的财产对象 - 更多关于这个here。我相信你会在将来像msdn网站上的例子那样设置cookie过期日期。由于您在过去设置了日期时间,Cookie会自动过期,您永远无法读取它。