根据您要完成的工作,这里有很多正确的答案;这是我提供全面答案的尝试:
Request
和对象都Response
包含Cookies
属性,即HttpCookieCollection
对象。
Request.Cookies:
- 此集合包含从客户端收到的 cookie
- 此集合是只读的
- 如果您尝试访问此集合中不存在的 cookie,您将收到一个
null
值。
Response.Cookies:
- 此集合仅包含服务器在当前请求期间添加的 cookie。
- 这个集合是可写的
- 如果您尝试访问此集合中不存在的 cookie,您将收到一个新的 cookie 对象;如果您尝试访问的 cookie在集合中不存在
Request.Cookies
,它将被添加(但如果Request.Cookies
对象已经包含具有相同键的 cookie,并且即使它的值是陈旧的,它也不会更新以反映更改来自Response.Cookies
集合中新创建的 cookie。
解决方案
如果要检查客户端是否存在 cookie,请执行以下操作之一
Request.Cookies["COOKIE_KEY"] != null
Request.Cookies.Get("COOKIE_KEY") != null
Request.Cookies.AllKeys.Contains("COOKIE_KEY")
如果要检查服务器在当前请求期间添加的 cookie 是否存在,请执行以下操作:
Response.Cookies.AllKeys.Contains("COOKIE_KEY")
(见这里)
正在尝试通过以下方法之一检查服务器在当前请求期间添加的 cookie ...
Response.Cookies["COOKIE_KEY"] != null
Response.Cookies.Get("COOKIE_KEY") != null
(见这里)
...将导致在Response.Cookies
集合中创建一个 cookie,并且状态将评估为true
.