2016-09-28 96 views
2

我想从后端(Asp.Net核心)设置一个Cookie到浏览器,它应该在第二天同时减去5分钟。这里是来自控制器的C#代码如何正确设置ASP.NET核心上的Cookie的展开日期时间MVC

HttpContext.Response.Cookies.Append("MyCookie", 
     "test cookie value", 
     new Microsoft.AspNetCore.Http.CookieOptions 
     { 
      Expires = DateTimeOffset.UtcNow.AddDays(1).AddMinutes(-5) 
     }); 

但是对于浏览器来说,它带有错误的过期日期时间。

例如,如果cookie过期日期设置为2016-09-28 19:15,则在浏览器上它将在2016-09-29T17:15过期,并且少于2小时,这很奇怪,因为我的TimeZone是+1。

回答

2

DateTimeOffset.UtcNow是DateTimeOffset.Now + yourTimezone。

所以

DateTimeOffset.UtcNow.AddDays(1).AddMinutes(-5) 

将返回相同的

DateTimeOffset.Now.AddDays(1).AddMinutes(-5).AddHours(-2 /*your Timezone*/) 

浏览器显示的一切权利。

更改您的代码

HttpContext.Response.Cookies.Append("MyCookie", 
    "test cookie value", 
    new Microsoft.AspNetCore.Http.CookieOptions 
    { 
     Expires = DateTimeOffset.Now.AddDays(1).AddMinutes(-5) 
    }); 
//if you want to have the same expiration date as your server's 

或使用UtcNow +客户端的时区