how to read and write a cookie asp.net

/// <summary>
/// Stores multiple values in a Cookie using a key-value dictionary, creating the cookie (and/or the key) if it doesn't exists yet.
/// </summary>
/// <param name="cookieName">Cookie name</param>
/// <param name="cookieDomain">Cookie domain (or NULL to use default domain value)</param>
/// <param name="keyName">Cookie key name (if the cookie is a keyvalue pair): if NULL or EMPTY, this method will raise an exception since it's required when inserting multiple values.</param>
/// <param name="values">Values to store into the cookie</param>
/// <param name="expirationDate">Expiration Date (set it to NULL to leave default expiration date)</param>
/// <param name="httpOnly">set it to TRUE to enable HttpOnly, FALSE otherwise (default: false)</param>
/// <param name="sameSite">set it to 'None', 'Lax', 'Strict' or '(-1)' to not add it (default: '(-1)').</param>
/// <param name="secure">set it to TRUE to enable Secure (HTTPS only), FALSE otherwise</param>
public static void StoreInCookie(
    string cookieName, 
    string cookieDomain, 
    Dictionary<string, string> keyValueDictionary, 
    DateTime? expirationDate, 
    bool httpOnly = false,
    SameSiteMode sameSite = (SameSiteMode)(-1),
    bool secure = false)
{
    // NOTE: we have to look first in the response, and then in the request.
    // This is required when we update multiple keys inside the cookie.
    HttpCookie cookie = HttpContext.Current.Response.Cookies.AllKeys.Contains(cookieName)
        ? HttpContext.Current.Response.Cookies[cookieName]
        : HttpContext.Current.Request.Cookies[cookieName];

    if (cookie == null) cookie = new HttpCookie(cookieName);
    if (keyValueDictionary == null || keyValueDictionary.Count == 0)
        cookie.Value = null;
    else
        foreach (var kvp in keyValueDictionary)
            cookie.Values.Set(kvp.Key, kvp.Value);
    if (expirationDate.HasValue) cookie.Expires = expirationDate.Value;
    if (!String.IsNullOrEmpty(cookieDomain)) cookie.Domain = cookieDomain;
    if (httpOnly) cookie.HttpOnly = true;
    cookie.Secure = secure;
    cookie.SameSite = sameSite;
    HttpContext.Current.Response.Cookies.Set(cookie);
}

/// <summary>
/// Retrieves a single value from Request.Cookies
/// </summary>
public static string GetFromCookie(string cookieName, string keyName)
{
    HttpCookie cookie = HttpContext.Current.Request.Cookies[cookieName];
    if (cookie != null)
    {
        string val = (!String.IsNullOrEmpty(keyName)) ? cookie[keyName] : cookie.Value;
        if (!String.IsNullOrEmpty(val)) return Uri.UnescapeDataString(val);  
    }
    return null;
}

/// <summary>
/// Removes a single value from a cookie or the whole cookie (if keyName is null)
/// </summary>
/// <param name="cookieName">Cookie name to remove (or to remove a KeyValue in)</param>
/// <param name="keyName">the name of the key value to remove. If NULL or EMPTY, the whole cookie will be removed.</param>
/// <param name="domain">cookie domain (required if you need to delete a .domain.it type of cookie)</param>
public static void RemoveCookie(string cookieName, string keyName, string domain)
{
    if (HttpContext.Current.Request.Cookies[cookieName] != null)
    {
        HttpCookie cookie = HttpContext.Current.Request.Cookies[cookieName];
 
        // SameSite.None Cookies won't be accepted by Google Chrome and other modern browsers if they're not secure, which would lead in a "non-deletion" bug.
        // in this specific scenario, we need to avoid emitting the SameSite attribute to ensure that the cookie will be deleted.
        if (cookie.SameSite == SameSiteMode.None && !cookie.Secure)
            cookie.SameSite = (SameSiteMode)(-1);
 
        if (String.IsNullOrEmpty(keyName))
        {
            cookie.Expires = DateTime.UtcNow.AddYears(-1);
            if (!String.IsNullOrEmpty(domain)) cookie.Domain = domain;
            HttpContext.Current.Response.Cookies.Add(cookie);
            HttpContext.Current.Request.Cookies.Remove(cookieName);
        }
        else
        {
            cookie.Values.Remove(keyName);
            if (!String.IsNullOrEmpty(domain)) cookie.Domain = domain;
            HttpContext.Current.Response.Cookies.Add(cookie);
        }
    }
}

/// <summary>
/// Checks if a cookie / key exists in the current HttpContext.
/// </summary>
public static bool CookieExist(string cookieName, string keyName)
{
    HttpCookieCollection cookies = HttpContext.Current.Request.Cookies;
    return (String.IsNullOrEmpty(keyName)) 
        ? cookies[cookieName] != null 
        : cookies[cookieName] != null && cookies[cookieName][keyName] != null;
}

Are there any code examples left?
Made with love
This website uses cookies to make IQCode work for you. By using this site, you agree to our cookie policy

Welcome Back!

Sign up to unlock all of IQCode features:
  • Test your skills and track progress
  • Engage in comprehensive interactive courses
  • Commit to daily skill-enhancing challenges
  • Solve practical, real-world issues
  • Share your insights and learnings
Create an account
Sign in
Recover lost password
Or log in with

Create a Free Account

Sign up to unlock all of IQCode features:
  • Test your skills and track progress
  • Engage in comprehensive interactive courses
  • Commit to daily skill-enhancing challenges
  • Solve practical, real-world issues
  • Share your insights and learnings
Create an account
Sign up
Or sign up with
By signing up, you agree to the Terms and Conditions and Privacy Policy. You also agree to receive product-related marketing emails from IQCode, which you can unsubscribe from at any time.
Creating a new code example
Code snippet title
Source