2017-04-06 1767 views
0

我在我的ASP.NET Core MVC(.NET Framework)应用程序之一中使用了Cookie。 我正在尝试在客户端浏览器会话处于活动状态时保留一个对象值。 我想读取,写入和更新该值。ASP.NET Core MVC(.NET Framework)写入,读取和更新Cookie

我为了对我的对象进行序列化和反序列化我使用System.Web.Script.Serialization命名空间中的JavascriptSerializer类,并为了处理cookie,我使用了Microsoft.ASPNetCore.Http命名空间中的HttpResponse和HttpRequest类。

我可以读取cookie,然后将其反序列化到我的对象或序列化我的对象,然后将其写入cookie。但是我无法更新cookie,因为Response.Cookies对象不允许我更新现有的cookie。然后我删除了这个cookie并将它附加到Response.Cookies对象上,但它工作正常。是否有任何其他方式更新MVC6应用程序内的cookie,而不必删除它?这不是“cookie更新”!

回答

1

Cookie无法更新。对此,也不能删除。这不是MVC的问题,这是一个关于cookie的事实,参见例如。 https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies:服务器可以对cookie执行的唯一操作是设置它。 (也许这有助于将Cookie视为浏览器而非服务器所拥有)。

  • 要更新cookie,请使用新值覆盖它。
  • 要删除一个cookie,请将过期设置为昨天。

在浏览器中,您可以看到重新为cookie添加新值会产生所需的效果:浏览器获取新值。例如

服务器端:

HttpContext.Response.Cookies.Append("key", "value set at " + DateTime.Now.TimeOfDay); 

和客户端:

document.writeln(document.cookie); 
console.log("document.cookie", document.cookie);