CookieHelper主要實現(xiàn)的功能介紹:
1,寫cookie值 不在客戶端創(chuàng)建文件,存放在服務(wù)器內(nèi)存中
2,寫cookie值 在客戶端創(chuàng)建文件。存放cookie值(單一項值)
3,寫cookie值(存放數(shù)組形式參數(shù),用于第一次寫cookie值,并指定有效時間)
4,寫cookie值(操作已經(jīng)存在的cookie,存放數(shù)組形式參數(shù))
5,清除登錄用戶的cookie
6,讀cookie值
7,獲得cookie值

8,是否為有效域

CookieHelper源碼


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Text.RegularExpressions;
  
namespace jizhuni.Common
{
    public class CookieHelper
    {
        /// <summary>
        /// 寫cookie值,不在客戶端創(chuàng)建文件,存放在服務(wù)器內(nèi)存中。
        /// </summary>
        /// <param name="strName">名稱</param>
        /// <param name="strValue">值</param>
        public static void WriteCookie(string strName, string strValue)
        {
            HttpCookie cookie = HttpContext.Current.Request.Cookies[strName];
            if (cookie == null)
            {
                cookie = new HttpCookie(strName);
            }
            cookie.Value = strValue;
            HttpContext.Current.Response.AppendCookie(cookie);
  
        }
        /// <summary>
        /// 寫cookie值,在客戶端創(chuàng)建文件。存放cookie值(單一項值)。
        /// </summary>
        /// <param name="strName">名稱</param>
        /// <param name="strValue">值</param>
        /// <param name="cookieDomain">域</param>
        /// <param name="expires">cookie 保存時長 單位分種</param>
        public static void WriteCookie(string strName, string strValue, string cookieDomain, int expires)
        {
            HttpCookie cookie = HttpContext.Current.Request.Cookies[strName] ?? new HttpCookie(strName);
            cookie.Value = strValue;
            //cookie.Expires = DateTime.Now.AddMinutes(expires);
            cookie.Expires = DateTime.Now.AddMinutes(expires);
            cookie.Domain = cookieDomain;
            HttpContext.Current.Response.AppendCookie(cookie);
  
        }
  
        /// <summary>
        /// 寫cookie值(存放數(shù)組形式參數(shù),用于第一次寫cookie值,并指定有效時間)
        /// </summary>
        /// <param name="cookieName">cookies名字</param>
        /// <param name="strValuesName">cookie項的名稱,cookie[strValuesName][]</param>
        /// <param name="strValue">cookie項的值,cookie[strValuesName][strValue]</param>
        /// <param name="cookieDomain">cookie域?qū)傩?lt;/param>
        /// <param name="expiresDays">cookies 有效時間 單位天</param>
        public static void WriteCookie(string cookieName, string strValuesName, string strValue, string cookieDomain, int expiresDays)
        {
            HttpCookie cookie = HttpContext.Current.Request.Cookies[cookieName];
            if (cookie == null)
            {
                cookie = new HttpCookie(cookieName);
                cookie.Values[strValuesName] = HttpUtility.UrlEncode(strValue);
            }
  
            cookie.Values[strValuesName] = HttpUtility.UrlEncode(strValue);
            cookie.Values["expires"] = expiresDays.ToString();
            cookie.Expires = DateTime.Now.AddDays(expiresDays);
  
  
            if (cookieDomain != string.Empty 
                && HttpContext.Current.Request.Url.Host.IndexOf(cookieDomain) > -1 
                && IsValidDomain(HttpContext.Current.Request.Url.Host))
                cookie.Domain = cookieDomain;
  
            HttpContext.Current.Response.AppendCookie(cookie);
        }
  
  
        /// <summary>
        /// 寫cookie值(操作已經(jīng)存在的cookie,存放數(shù)組形式參數(shù))
        /// </summary>
        /// <param name="cookieName">cookies名字</param>
        /// <param name="strValuesName">cookie項的名稱,cookie[strValuesName][]</param>
        /// <param name="strValue">cookie項的值,cookie[strValuesName][strValue]</param>
        /// <param name="cookieDomain">cookie域?qū)傩?lt;/param>
        public static void WriteCookie(string cookieName, string strValuesName, string strValue, string cookieDomain)
        {
            HttpCookie cookie = HttpContext.Current.Request.Cookies[cookieName];
            if (cookie == null)
            {
                cookie = new HttpCookie(cookieName);
                cookie.Values[strValuesName] = HttpUtility.UrlEncode(strValue);
            }
            else
            {
  
                cookie.Values[strValuesName] = HttpUtility.UrlEncode(strValue);
  
                var httpCookie = HttpContext.Current.Request.Cookies[cookieName];
                if (httpCookie != null && httpCookie["expires"] != null)
                {
                    int intExpires = PublicMethod.GetInt(httpCookie["expires"], 0);
                    if (intExpires > 0)
                    {
                        cookie.Values["expires"] = intExpires.ToString();
                        cookie.Expires = DateTime.Now.AddMinutes(intExpires);
                    }
                }
  
            }
  
            if (cookieDomain != string.Empty && 
                HttpContext.Current.Request.Url.Host.IndexOf(cookieDomain, System.StringComparison.Ordinal) > -1 && 
                IsValidDomain(HttpContext.Current.Request.Url.Host))
                cookie.Domain = cookieDomain;
  
            HttpContext.Current.Response.AppendCookie(cookie);
  
        }
  
        /// <summary>
        /// 清除登錄用戶的cookie
        /// </summary>
        public static void ClearUserCookie(string cookieDomain, string cookiesName)
        {
            HttpCookie cookie = new HttpCookie(cookiesName);
            cookie.Values.Clear();
            cookie.Expires = DateTime.Now.AddYears(-1);
            //string cookieDomain = ConfigFactory.GetConfig().CookieDomain.Trim();
            if (cookieDomain != string.Empty && 
                HttpContext.Current.Request.Url.Host.IndexOf(cookieDomain, System.StringComparison.Ordinal) > -1 
                && IsValidDomain(HttpContext.Current.Request.Url.Host))
                cookie.Domain = cookieDomain;
            HttpContext.Current.Response.AppendCookie(cookie);
  
        }
  
  
        /// <summary>
        /// 讀cookie值
        /// </summary>
        /// <param name="strName">名稱</param>
        /// <returns>cookie值</returns>
        public static string GetCookie(string strName)
        {
            var httpCookie = HttpContext.Current.Request.Cookies[strName];
            return httpCookie != null ? httpCookie.Value : "";
        }
  
        /// <summary>
        /// 獲得cookie值
        /// </summary>
        /// <param name="cookiesName">Cookie 名稱</param>
        /// <param name="strName">項</param>
        /// <returns>值</returns>
        public static string GetCookie(string cookiesName, string strName)
        {
            var httpCookie = HttpContext.Current.Request.Cookies[cookiesName];
            if (httpCookie != null && httpCookie[strName] != null)
            {
                return HttpUtility.UrlDecode(httpCookie.Values[strName]);
            }
  
            return "";
        }
  
        /// <summary>
        /// 是否為有效域
        /// </summary>
        /// <param name="host">域名</param>
        /// <returns></returns>
        public static bool IsValidDomain(string host)
        {
            Regex r = new Regex(@"^\d $");
            if (host.IndexOf(".") == -1)
            {
                return false;
            }
            return !r.IsMatch(host.Replace(".", string.Empty));
        }
    }
}

原文鏈接:C#操作Cookie方法大全 CookieHelper類庫