How to best check if a cookie exists?

26,588

You are using Response.Cookies. That's wrong - they are the cookies that are sent BACK to the browser.

To read existing cookies, you need to look at Request.Cookies:

if (context.Request.Cookies["CookieName"] != null)
{
   //Do stuff;
}
Share:
26,588
Cammy
Author by

Cammy

Updated on July 09, 2022

Comments

  • Cammy
    Cammy almost 2 years

    I was trying to determine if a cookie existed and if it had expired with this code:

    if(HttpContext.Current.Response.Cookies["CookieName"]){
        Do stuff;
    }
    

    However after long hours of tears and sweat I noticed that this line was actually creating a blank cookie or overwriting the existing cookie and its value to be blank and expire at 0.

    I solved this by doing reading ALL the cookies and looking for a match like that instead

    if (context.Response.Cookies.AllKeys.Contains("CookieName"))
            {
                Do stuff;
            }
    

    This doesn't seem optimal, and I find it weird that my initial attempt created a cookie. Does anyone have a good explanation to cookie?

  • Cammy
    Cammy over 10 years
    We had a function that created a cookie after clicking a button. Then we wanted to check for existance of that cookie during Page_PreRender. By then the cookie is not in the request yet, since we haven't sent a response out with the new cookie. Therefore we created a property that looked for the cookie first in the Response, and then if there was nothing there, in the Request.
  • Cammy
    Cammy over 10 years
    What was really confusing was that the first if-block I was using was always returning a cookie (sometimes empty, since trying to get a non-existing cookie from the Response will create it automatically).