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類庫