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

Cam*_*mmy 9 c# asp.net cookies

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

if(HttpContext.Current.Response.Cookies["CookieName"]){
    Do stuff;
}
Run Code Online (Sandbox Code Playgroud)

然而,经过长时间的流泪和汗水,我注意到这一行实际上是创建一个空白cookie或覆盖现有的cookie,其值为空白,并在0时过期.

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

if (context.Response.Cookies.AllKeys.Contains("CookieName"))
        {
            Do stuff;
        }
Run Code Online (Sandbox Code Playgroud)

这似乎不是最佳的,我发现我的初始尝试创建了一个cookie很奇怪.有没有人对cookie有一个很好的解释?

jen*_*ent 17

你正在使用Response.Cookies.那是错的 - 它们是发送回浏览器的cookie.

要阅读现有的cookie,您需要查看Request.Cookies:

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

  • 真正令人困惑的是,我使用的第一个 if 块总是返回一个 cookie(有时是空的,因为尝试从响应中获取不存在的 cookie 会自动创建它)。 (2认同)