如果我使用以下代码检索cookie:
Request.Cookies.Get("LoremIpsum")
并且这个cookie不存在我会得到一个空的cookie而不是null。这是为什么?
当我想查看Response cookie集合以及请求cookie集合时,它会导致一些问题。如果我想要的cookie在响应中不存在,它会在响应cookie集合中添加一个空cookie,然后将其返回给我。因此,在页面加载后,请求中存在的cookie将被空响应cookie替换。
真的很讨厌,我猜测.NET必须有一个原因而不是只返回null?
答案 0 :(得分:2)
它引起了一些问题
它不应该,因为它是documented:
如果指定的cookie不存在,则此方法将创建一个具有该名称的新cookie。
所以不要在没有检查的情况下分配它:
var cookie = Request.Cookies.Get("LoremIpsum");
if (!string.IsNullOrEmpty(cookie.Value))
{
Response.Cookies["LoremIpsum"] = cookie;
}
或者,不要使用Get()
,而是使用indexer,如果给定的Cookie不存在,则会返回null
:
var cookie = Request.Cookies["LoremIpsum"];
if (cookie != null)
{
Response.Cookies["LoremIpsum"] = cookie;
}