首页 > 代码库 > Cookies操作类
Cookies操作类
实现代码:
//声名一个数据集合 var listString = new List<string>() { "a", "b", "c" }; //缓存key string key = "cokey"; //获取实例 var cookiesManager = CookiesManager<List<string>>.GetInstance(); //插入缓存 cookiesManager.Add(key, listString, cookiesManager.Minutes * 30);//过期30分钟 //add有其它重载 上面是最基本的 //获取 List<string> cookiesList = cookiesManager[key]; //其它方法 cookiesManager.ContainsKey(key); cookiesManager.Remove(key);//删除 cookiesManager.RemoveAll(c => c.Contains("sales_"));//删除key包含sales_的cookies cookiesManager.GetAllKey();//获取所有key
封装类:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web; namespace SyntacticSugar{ /// <summary> /// ** 描述:cookies操作类 /// ** 创始时间:2015-6-9 /// ** 修改时间:- /// ** 作者:sunkaixuan /// ** 使用说明: /// </summary> /// <typeparam name="V">值</typeparam> public class CookiesManager<V> : IHttpStorageObject<V> { #region 全局变量 private static CookiesManager<V> _instance = null; private static readonly object _instanceLock = new object(); #endregion /// <summary> /// 获取实例 (单例模式) /// </summary> /// <returns></returns> public static CookiesManager<V> GetInstance() { if (_instance == null) lock (_instanceLock) if (_instance == null) _instance = new CookiesManager<V>(); return _instance; } /// <summary> /// 添加cookies ,注意value最大4K (默认1天) /// </summary> /// <param name="key">key</param> /// <param name="value">value</param> public override void Add(string key, V value) { Add(key, value, Day); } /// <summary> /// 添加cookies ,注意value最大4K /// </summary> /// <param name="key"></param> /// <param name="value"></param> /// <param name="cookiesDurationInSeconds">有效时间单位秒</param> public void Add(string key, V value, int cookiesDurationInSeconds) { HttpResponse response = HttpContext.Current.Response; if (response != null) { HttpCookie cookie = response.Cookies[key]; if (cookie != null) { if (typeof(V) == typeof(string)) { string setValue =http://www.mamicode.com/ value.ToString(); Add(key, cookiesDurationInSeconds, cookie, setValue, response); } else { System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer(); string setValue =http://www.mamicode.com/ jss.Serialize(value); Add(key, cookiesDurationInSeconds, cookie, setValue, response); } } } } private void Add(string key, int cookiesDurationInSeconds, HttpCookie cookie, string setValue, HttpResponse response) { if (!string.IsNullOrEmpty(key) && cookie.HasKeys) cookie.Values.Set(key, setValue); else if (!string.IsNullOrEmpty(setValue)) cookie.Value = setValue; if (cookiesDurationInSeconds > 0) cookie.Expires = DateTime.Now.AddSeconds(cookiesDurationInSeconds); response.SetCookie(cookie); } public override bool ContainsKey(string key) { return Get(key) != null; } public override V Get(string key) { string value = http://www.mamicode.com/string.Empty; if (context.Request.Cookies[key] != null) value = context.Request.Cookies[key].Value; if (typeof(V) == typeof(string)) { return (V)Convert.ChangeType(value, typeof(V)); } else { System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer(); return jss.Deserialize<V>(value); } } public override IEnumerable<string> GetAllKey() { var allKeyList = context.Request.Cookies.AllKeys.ToList(); foreach (var key in allKeyList) { yield return key; } } public override void Remove(string key) { HttpRequest request = HttpContext.Current.Request; if (request != null) { HttpCookie cookie = request.Cookies[key]; cookie.Expires = DateTime.Now.AddDays(-1); if (cookie != null) { if (!string.IsNullOrEmpty(key) && cookie.HasKeys) cookie.Values.Remove(key); else request.Cookies.Remove(key); } } } public override void RemoveAll() { foreach (var key in GetAllKey()) { Remove(key); } } public override void RemoveAll(Func<string, bool> removeExpression) { var removeList = GetAllKey().Where(removeExpression).ToList(); foreach (var key in removeList) { Remove(key); } } public override V this[string key] { get { return Get(key); } } }}
using System;namespace SyntacticSugar{ public abstract class IHttpStorageObject<V> { public int Minutes = 60; public int Hour = 60 * 60; public int Day = 60 * 60 * 24; public System.Web.HttpContext context = System.Web.HttpContext.Current; public abstract void Add(string key, V value); public abstract bool ContainsKey(string key); public abstract V Get(string key); public abstract global::System.Collections.Generic.IEnumerable<string> GetAllKey(); public abstract void Remove(string key); public abstract void RemoveAll(); public abstract void RemoveAll(Func<string, bool> removeExpression); public abstract V this[string key] { get; } }}
Cookies操作类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。