using System; using System.Web; namespace AmwITx.Framework.Web.Components { /// <summary> /// Cookie /// </summary> public class Cookie { private Cookie() { } private static Cookie _instance = new Cookie(); public static Cookie Instance { get { return _instance; } set { _instance = value; } } /// <summary> /// SetCookie /// </summary> /// <param name="key"></param> /// <param name="value"></param> public void Set(string key, string value) { Set(key, value, "/", "", 0); } /// <summary> /// SetCookie /// </summary> /// <param name="key"></param> /// <param name="value"></param> /// <param name="path"></param> /// <param name="domain">二级域名时定位</param> /// <param name="hour"></param> public void Set(string key, string value, string path, string domain, int hour) { Set(key, value, path, domain, DateTime.Now.AddHours(hour)); } /// <summary> /// SetCookie /// </summary> /// <param name="key"></param> /// <param name="value"></param> /// <param name="path"></param> /// <param name="domain">二级域名时定位</param> /// <param name="expires"></param> public void Set(string key, string value, string path, string domain, DateTime expires) { var cookie = HttpContext.Current.Request.Cookies[key]; bool isAdd = false; if (cookie == null) { isAdd = true; cookie = new HttpCookie(key); } cookie.Path = path; cookie.Domain = domain; cookie.Value = HttpUtility.UrlEncode(value); if (expires > DateTime.Now) { cookie.Expires = expires; } if (isAdd) { HttpContext.Current.Response.Cookies.Add(cookie); } else { HttpContext.Current.Response.Cookies.Set(cookie); } } /// <summary> /// Cookie /// </summary> public string Get(string key) { var cookie = HttpContext.Current.Request.Cookies[key]; return cookie != null ? HttpUtility.UrlDecode(cookie.Value) : ""; } /// <summary> /// Cookie /// </summary> /// <param name="key"></param> public void Remove(string key) { Remove(key, "", ""); } public void Remove(string key, string path, string domain) { var hc = new HttpCookie(key); if (path != "") { hc.Path = path; } if (domain != "") { hc.Domain = domain; } hc.Expires = DateTime.Now.AddDays(-1); HttpContext.Current.Response.Cookies.Add(hc); } } }