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

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

2009-03-29 11:27 519 查看
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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: