您的位置:首页 > 编程语言 > ASP

ASP.NET(c#)操作cookie、session、cache工具类[转]

2009-12-14 15:18 477 查看
public static class Cookie
{
/// 创建COOKIE对象并赋Value值
/// <summary>
/// 创建COOKIE对象并赋Value值,修改COOKIE的Value值也用此方法,因为对COOKIE修改必须重新设Expires
/// </summary>
/// <param name="strCookieName">COOKIE对象名</param>
/// <param name="iExpires">COOKIE对象有效时间(秒数),1表示永久有效,0和负数都表示不设有效时间,大于等于2表示具体有效秒 数,31536000秒=1年=(60*60*24*365),</param>
/// <param name="strValue">COOKIE对象Value值</param>
public static void SetObj(string strCookieName, int iExpires, string strValue)
{
HttpCookie objCookie = new HttpCookie(strCookieName.Trim());
objCookie.Value = Utils.EncodeURIComponent(strValue.Trim());
objCookie.Domain = N0.Config.CommonConfig.strDomain;
if (iExpires > 0)
{
if (iExpires == 1)
{
objCookie.Expires = DateTime.MaxValue;
}
else
{
objCookie.Expires = DateTime.Now.AddSeconds(iExpires);
}
}
HttpContext.Current.Response.Cookies.Add(objCookie);
}
/// 创建COOKIE对象并赋多个KEY键值
/// <summary>
/// 创建COOKIE对象并赋多个KEY键值
/// 设键/值如下:
/// NameValueCollection myCol = new NameValueCollection();
/// myCol.Add("red", "rojo");
/// myCol.Add("green", "verde");
/// myCol.Add("blue", "azul");
/// myCol.Add("red", "rouge"); 结果“red:rojo,rouge;green:verde;blue:azul”
/// </summary>
/// <param name="strCookieName">COOKIE对象名</param>
/// <param name="iExpires">COOKIE对象有效时间(秒数),1表示永久有效,0和负数都表示不设有效时间,大于等于2表示具体有效秒 数,31536000秒=1年=(60*60*24*365),</param>
/// <param name="KeyValue">键/值对集合</param>
public static void SetObj(string strCookieName, int iExpires, NameValueCollection KeyValue)
{
HttpCookie objCookie = new HttpCookie(strCookieName.Trim());
foreach (String key in KeyValue.AllKeys)
{
objCookie[key] = Utils.EncodeURIComponent(KeyValue[key].Trim());
}
objCookie.Domain = N0.Config.CommonConfig.strDomain;
if (iExpires > 0)
{
if (iExpires == 1)
{
objCookie.Expires = DateTime.MaxValue;
}
else
{
objCookie.Expires = DateTime.Now.AddSeconds(iExpires);
}
}
HttpContext.Current.Response.Cookies.Add(objCookie);
}
/// 创建COOKIE对象并赋Value值
/// <summary>
/// 创建COOKIE对象并赋Value值,修改COOKIE的Value值也用此方法,因为对COOKIE修改必须重新设Expires
/// </summary>
/// <param name="strCookieName">COOKIE对象名</param>
/// <param name="iExpires">COOKIE对象有效时间(秒数),1表示永久有效,0和负数都表示不设有效时间,大于等于2表示具体有效秒 数,31536000秒=1年=(60*60*24*365),</param>
/// <param name="strDomain">作用域</param>
/// <param name="strValue">COOKIE对象Value值</param>
public static void SetObj(string strCookieName, int iExpires, string strValue, string strDomain)
{
HttpCookie objCookie = new HttpCookie(strCookieName.Trim());
objCookie.Value = Utils.EncodeURIComponent(strValue.Trim());
objCookie.Domain = strDomain.Trim();
if (iExpires > 0)
{
if (iExpires == 1)
{
objCookie.Expires = DateTime.MaxValue;
}
else
{
objCookie.Expires = DateTime.Now.AddSeconds(iExpires);
}
}
HttpContext.Current.Response.Cookies.Add(objCookie);
}
/// 创建COOKIE对象并赋多个KEY键值
/// <summary>
/// 创建COOKIE对象并赋多个KEY键值
/// 设键/值如下:
/// NameValueCollection myCol = new NameValueCollection();
/// myCol.Add("red", "rojo");
/// myCol.Add("green", "verde");
/// myCol.Add("blue", "azul");
/// myCol.Add("red", "rouge"); 结果“red:rojo,rouge;green:verde;blue:azul”
/// </summary>
/// <param name="strCookieName">COOKIE对象名</param>
/// <param name="iExpires">COOKIE对象有效时间(秒数),1表示永久有效,0和负数都表示不设有效时间,大于等于2表示具体有效秒 数,31536000秒=1年=(60*60*24*365),</param>
/// <param name="strDomain">作用域</param>
/// <param name="KeyValue">键/值对集合</param>
public static void SetObj(string strCookieName, int iExpires, NameValueCollection KeyValue, string strDomain)
{
HttpCookie objCookie = new HttpCookie(strCookieName.Trim());
foreach (String key in KeyValue.AllKeys)
{
objCookie[key] = Utils.EncodeURIComponent(KeyValue[key].Trim());
}
objCookie.Domain = strDomain.Trim();
if (iExpires > 0)
{
if (iExpires == 1)
{
objCookie.Expires = DateTime.MaxValue;
}
else
{
objCookie.Expires = DateTime.Now.AddSeconds(iExpires);
}
}
HttpContext.Current.Response.Cookies.Add(objCookie);
}

/// 读取Cookie某个对象的Value值
/// <summary>
/// 读取Cookie某个对象的Value值,返回Value值,如果对象本就不存在,则返回字符串"CookieNonexistence"
/// </summary>
/// <param name="strCookieName">Cookie对象名称</param>
/// <returns>Value值,如果对象本就不存在,则返回字符 串"CookieNonexistence"</returns>
public static string GetValue(string strCookieName)
{
if (HttpContext.Current.Request.Cookies[strCookieName] == null)
{
return "CookieNonexistence";
}
else
{
return Utils.DecodeURIComponent(HttpContext.Current.Request.Cookies[strCookieName].Value);
}
}
/// 读取Cookie某个对象的某个Key键的键值
/// <summary>
/// 读取Cookie某个对象的某个Key键的键值,返回Key键值,如果对象本就不存在,则返回字符串"CookieNonexistence",如果 Key键不存在,则返回字符串"KeyNonexistence"
/// </summary>
/// <param name="strCookieName">Cookie对象名称</param>
/// <param name="strKeyName">Key键名</param>
/// <returns>Key键值,如果对象本就不存在,则返回字符串"CookieNonexistence",如果Key键不存在,则返回字 符串"KeyNonexistence"</returns>
public static string GetValue(string strCookieName,string strKeyName)
{
if (HttpContext.Current.Request.Cookies[strCookieName] == null)
{
return "CookieNonexistence";
}
else
{
string strObjValue = Utils.DecodeURIComponent(HttpContext.Current.Request.Cookies[strCookieName].Value);
string strKeyName2 = strKeyName+"=";
if (strObjValue.IndexOf(strKeyName2) == -1)
{
return "KeyNonexistence";
}
else
{
return Utils.DecodeURIComponent(HttpContext.Current.Request.Cookies[strCookieName][strKeyName]);
}
}
}

/// 修改某个COOKIE对象某个Key键的键值 或 给某个COOKIE对象添加Key键 都调用本方法
/// <summary>
/// 修改某个COOKIE对象某个Key键的键值 或 给某个COOKIE对象添加Key键 都调用本方法,操作成功返回字符串"success",如果对象本就不存在,则返回字符串"CookieNonexistence"。
/// </summary>
/// <param name="strCookieName">Cookie对象名称</param>
/// <param name="strKeyName">Key键名</param>
/// <param name="KeyValue">Key键值</param>
/// <param name="iExpires">COOKIE对象有效时间(秒数),1表示永久有效,0和负数都表示不设有效时间,大于等于2表示具体有效秒 数,31536000秒=1年=(60*60*24*365)。注意:虽是修改功能,实则重建覆盖,所以时间也要重设,因为没办法获得旧的有效期< /param>
/// <returns>如果对象本就不存在,则返回字符串"CookieNonexistence",如果操作成功返回字符 串"success"。</returns>
public static string Edit(string strCookieName, string strKeyName, string KeyValue,int iExpires)
{
if (HttpContext.Current.Request.Cookies[strCookieName] == null)
{
return "CookieNonexistence";
}
else
{
HttpCookie objCookie = HttpContext.Current.Request.Cookies[strCookieName];
objCookie[strKeyName] = Utils.EncodeURIComponent(KeyValue.Trim());
objCookie.Domain = N0.Config.CommonConfig.strDomain;
if (iExpires > 0)
{
if (iExpires == 1)
{
objCookie.Expires = DateTime.MaxValue;
}
else
{
objCookie.Expires = DateTime.Now.AddSeconds(iExpires);
}
}
HttpContext.Current.Response.Cookies.Add(objCookie);
return "success";
}
}

/// 删除COOKIE对象
/// <summary>
/// 删除COOKIE对象
/// </summary>
/// <param name="strCookieName">Cookie对象名称</param>
public static void Del(string strCookieName)
{
HttpCookie objCookie = new HttpCookie(strCookieName.Trim());
objCookie.Domain = N0.Config.CommonConfig.strDomain;
objCookie.Expires = DateTime.Now.AddYears(-5);
HttpContext.Current.Response.Cookies.Add(objCookie);
}
/// 删除某个COOKIE对象某个Key子键
/// <summary>
/// 删除某个COOKIE对象某个Key子键,操作成功返回字符串"success",如果对象本就不存在,则返回字符 串"CookieNonexistence"
/// </summary>
/// <param name="strCookieName">Cookie对象名称</param>
/// <param name="strKeyName">Key键名</param>
/// <param name="iExpires">COOKIE对象有效时间(秒数),1表示永久有效,0和负数都表示不设有效时间,大于等于2表示具体有效秒 数,31536000秒=1年=(60*60*24*365)。注意:虽是修改功能,实则重建覆盖,所以时间也要重设,因为没办法获得旧的有效期< /param>
/// <returns>如果对象本就不存在,则返回字符串"CookieNonexistence",如果操作成功返回字符 串"success"。</returns>
public static string Del(string strCookieName, string strKeyName, int iExpires)
{
if (HttpContext.Current.Request.Cookies[strCookieName] == null)
{
return "CookieNonexistence";
}
else
{
HttpCookie objCookie = HttpContext.Current.Request.Cookies[strCookieName];
objCookie.Values.Remove(strKeyName);
objCookie.Domain = N0.Config.CommonConfig.strDomain;
if (iExpires > 0)
{
if (iExpires == 1)
{
objCookie.Expires = DateTime.MaxValue;
}
else
{
objCookie.Expires = DateTime.Now.AddSeconds(iExpires);
}
}
HttpContext.Current.Response.Cookies.Add(objCookie);
return "success";
}
}
}
/// Session操作类
/// <summary>
/// Session操作类
/// </summary>
public static class SessionCustom
{
/// 添加Session,调动有效期默认为23分钟
/// <summary>
/// 添加Session,调动有效期默认为23分钟
/// </summary>
/// <param name="strSessionName">Session对象名称</param>
/// <param name="strValue">Session值</param>
public static void Add(string strSessionName, string strValue)
{
HttpContext.Current.Session[strSessionName] = strValue;
HttpContext.Current.Session.Timeout = 23;
}
/// 添加Session
/// <summary>
/// 添加Session
/// </summary>
/// <param name="strSessionName">Session对象名称</param>
/// <param name="strValue">Session值</param>
/// <param name="iExpires">调动有效期(分钟)</param>
public static void Add(string strSessionName, string strValue, int iExpires)
{
HttpContext.Current.Session[strSessionName] = strValue;
HttpContext.Current.Session.Timeout = iExpires;
}

/// 读取某个Session对象值
/// <summary>
/// 读取某个Session对象值
/// </summary>
/// <param name="strSessionName">Session对象名称</param>
/// <returns>Session对象值</returns>
public static string Get(string strSessionName)
{
if (HttpContext.Current.Session[strSessionName] == null)
{
return null;
}
else
{
return HttpContext.Current.Session[strSessionName].ToString();
}
}

/// 删除某个Session对象
/// <summary>
/// 删除某个Session对象
/// </summary>
/// <param name="strSessionName">Session对象名称</param>
public static void Del(string strSessionName)
{
HttpContext.Current.Session[strSessionName] = null;
}
}

/// Cache操作类
/// <summary>
/// Cache操作类
/// </summary>
public static class CacheCustom
{
/// 简单创建/修改Cache,前提是这个值是字符串形式的
/// <summary>
/// 简单创建/修改Cache,前提是这个值是字符串形式的
/// </summary>
/// <param name="strCacheName">Cache名称</param>
/// <param name="strValue">Cache值</param>
/// <param name="iExpires">有效期,秒数(使用的是当前时间+秒数得到一个绝对到期值)</param>
/// <param name="priority">保留优先级,1最不会被清除,6最容易被内存管理清除 (1:NotRemovable;2:High;3:AboveNormal;4:Normal;5:BelowNormal;6:Low)</param>
public static void Insert(string strCacheName, string strValue, int iExpires, int priority)
{
TimeSpan ts = new TimeSpan(0, 0, iExpires);
CacheItemPriority cachePriority;
switch (priority)
{
case 6:
cachePriority = CacheItemPriority.Low;
break;
case 5:
cachePriority = CacheItemPriority.BelowNormal;
break;
case 4:
cachePriority = CacheItemPriority.Normal;
break;
case 3:
cachePriority = CacheItemPriority.AboveNormal;
break;
case 2:
cachePriority = CacheItemPriority.High;
break;
case 1:
cachePriority = CacheItemPriority.NotRemovable;
break;
default:
cachePriority = CacheItemPriority.Default;
break;
}
HttpContext.Current.Cache.Insert(strCacheName, strValue, null, DateTime.Now.Add(ts), System.Web.Caching.Cache.NoSlidingExpiration, cachePriority, null);
}

/// 简单读书Cache对象的值,前提是这个值是字符串形式的
/// <summary>
/// 简单读书Cache对象的值,前提是这个值是字符串形式的
/// </summary>
/// <param name="strCacheName">Cache名称</param>
/// <returns>Cache字符串值</returns>
public static string Get(string strCacheName)
{
return HttpContext.Current.Cache[strCacheName].ToString();
}

/// 删除Cache对象
/// <summary>
/// 删除Cache对象
/// </summary>
/// <param name="strCacheName">Cache名称</param>
public static void Del(string strCacheName)
{
HttpContext.Current.Cache.Remove(strCacheName);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: