ASP.NET Core MVC(.NET Framework)编写,读取和更新Cookie

El *_*mes 3 cookies asp.net-core

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

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

我可以读取cookie,然后将其反序列化为我的对象,或者序列化我的对象,然后将其写入cookie。但是由于Response.Cookies对象不允许我更新现有的cookie,所以我无法更新cookie。然后,我删除了cookie并将其附加到Response.Cookies对象,但是可以。是否有其他方法可以在MVC6应用程序中更新Cookie,而不必删除它?那不是“ cookie更新”!

Chr*_*oll 5

Cookies无法更新。也不能为此删除它们。这不是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);
Run Code Online (Sandbox Code Playgroud)

和客户端:

document.writeln(document.cookie);
console.log("document.cookie", document.cookie);
Run Code Online (Sandbox Code Playgroud)

  • 您现在在 HttpContext.Response.Cookies 上还有一个删除方法,这使得删除 cookie 变得更容易 (2认同)