为什么 .NET 在请求不存在的 cookie 时不返回 null

本文关键字:返回 null cookie NET 请求 不存在 为什么 | 更新日期: 2023-09-27 18:37:06

如果我使用以下代码来检索cookie:

Request.Cookies.Get("LoremIpsum")

并且这个饼干不存在,然后我会得到一个空的饼干而不是空。这是为什么呢?

当我想查看响应 cookie 集合以及请求 cookie 集合时,它引起了一些问题。如果我想要的 cookie 在响应中不存在,它会在响应 cookie 集合中添加一个空 cookie,然后将其返回给我。因此,请求中存在的 cookie 将在页面加载后被空响应 cookie 替换。

真的很烦人,我猜 .NET 不只返回 null 一定是有原因的?

为什么 .NET 在请求不存在的 cookie 时不返回 null

它引起了一些问题

它不应该,因为它被记录在案:

如果命名的 cookie 不存在,此方法将创建一个具有该名称的新 cookie。

因此,不要在没有检查的情况下分配它:

var cookie = Request.Cookies.Get("LoremIpsum");
if (!string.IsNullOrEmpty(cookie.Value))
{
    Response.Cookies["LoremIpsum"] = cookie;
}

或者,不要使用 Get() ,而是使用索引器,如果给定的 cookie 不存在,索引器会返回null

var cookie = Request.Cookies["LoremIpsum"];
if (cookie != null)
{
    Response.Cookies["LoremIpsum"] = cookie;
}