Cookie的存储读取删除修改 (cookie.Expires读取永远是零时间)
1. Domain 和 Path 属性 是读不到的,读Domain属性永远是””,读Path属性永远是 ”/” 。本来这些属性的用途很有限。如果您的页面与 Cookie 不在相同的域,您根本就不会在页面的位置接收到该 Cookie。
2. 也无法读取Cookie 的过期日期和时间。事实上,当浏览器向服务器发送 Cookie 信息时,浏览器并未将过期信息包括在内。您可以读取 Expires 属性,但总是返回为零的日期/时间值。Expires 属性的主要作用是帮助浏览器执行有关 Cookie 保存的日常管理。从服务器的角度来看,Cookie 要么存在要么不存在,所以对服务器而言,有效期并不是有用的信息。
所以,浏览器在发送 Cookie 时并不提供此信息。如果您需要 Cookie 的过期日期,就必须重新设置。
3.Domain 设置的时候 Request.Url.Authority;有可能导致cookie不能正常读取;(我是本地测试有时无法正常读取,因为Request.Url.Authority取值为 localhost:1262 )可以改成这样“http://”+Request.Url.Authority cookie就可以正常读取。{这个还要测试}
写入cookie
public void SetCookie() { HttpCookie cookie = new HttpCookie("man"); cookie.Values.Add("name", "liming"); cookie.Values.Add("age", "20"); cookie.Expires = DateTime.Now.AddDays(1); cookie.Domain = Request.Url.Authority; Response.AppendCookie(cookie); }
读取cookie
HttpCookie cookie = Request.Cookies["man"]; if (cookie != null) { string name = cookie.Values["name"]; }
删除cookie
HttpCookie cookie = Request.Cookies["person"]; cookie.Expires = DateTime.Now.AddDays(-1); Response.AppendCookie(cookie);