2017-04-06 109 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);