C# · 12月 26, 2021

c# – Cookies始终过期

我正在设置一个cookie: HttpCookie cookie = new HttpCookie(“simpleorder”);cookie.Expires = DateTime.Now.AddYears(1);cookie[“order”] = carModel.ToString();cookie[“price”] = price.ToString();Response.Cookies.Add(cookie);

但是当我几秒钟后检查它已经过期,到期日期设置为{01-01-0001 00:00:00}.我尝试通过检索代码

HttpCookie cookie = Request.Cookies[“simpleorder”]; if (cookie != null && cookie.Expires > DateTime.Now)…

我不清楚cookie的任何地方,所以我不知道为什么它过期?

解决方法 这是常见的误解.请求Cookie集合表示请求Cookie标头中包含的Cookie.此类Cookie不包含有关何时到期的任何信息.严格来说,.NET应该使用两种不同的类型(RequestCookie和ResponseCookie),而是选择在两种情况下使用相同的类型.

当向响应添加Cookie时,Expires值才有意义.