C# 如何最好地检查cookie是否存在?

C# 如何最好地检查cookie是否存在?,c#,asp.net,cookies,C#,Asp.net,Cookies,我试图确定cookie是否存在,以及它是否已使用以下代码过期: if(HttpContext.Current.Response.Cookies["CookieName"]){ Do stuff; } 然而,经过长时间的眼泪和汗水,我注意到这一行实际上创建了一个空白cookie,或者覆盖了现有cookie,其值为空,并在0过期 我通过阅读所有的cookies并寻找一个类似的匹配来解决这个问题 if (context.Response.Cookies.AllKeys.Contains("C

我试图确定cookie是否存在,以及它是否已使用以下代码过期:

if(HttpContext.Current.Response.Cookies["CookieName"]){
    Do stuff;
}
然而,经过长时间的眼泪和汗水,我注意到这一行实际上创建了一个空白cookie,或者覆盖了现有cookie,其值为空,并在0过期

我通过阅读所有的cookies并寻找一个类似的匹配来解决这个问题

if (context.Response.Cookies.AllKeys.Contains("CookieName"))
        {
            Do stuff;
        }
这似乎不是最理想的,我发现我最初的尝试创造了一个cookie,这很奇怪。
有人对cookie有很好的解释吗?

您使用的是
Response.Cookies
。这是错误的-它们是发送回浏览器的cookies

要读取现有cookies,您需要查看
请求。cookies

if (context.Request.Cookies["CookieName"] != null)
{
   //Do stuff;
}

我们有一个函数,它在点击一个按钮后创建了一个cookie。然后我们想在页面预呈现期间检查cookie是否存在。到那时,cookie还不在请求中,因为我们还没有用新cookie发送响应。因此,我们创建了一个属性,该属性首先在响应中查找cookie,然后在请求中查找cookie。真正令人困惑的是,我使用的第一个if块总是返回cookie(有时为空,因为尝试从响应中获取不存在的cookie会自动创建cookie)。