天天看点

缓存通用管理类 + 缓存 HttpContext.Current.Cache 和 HttpRuntime.Cache 的区别

 以前写asp.net时用HttpContext.Current.Cache存缓存很好用,今天写了一个windows服务程序,HttpContext.Current.Cache存缓存的时候还好,取的时候一直报错“未将对象引用到实例”很郁闷,查询了一下资料才明白引用程序缓存要用HttpRuntime.Cache...

  我们先看MSDN上的解释:

        HttpContext.Current.Cache:为当前 HTTP 请求获取Cache对象。

        HttpRuntime.Cache:获取当前应用程序的Cache。

附带的写了一个操作缓存的通用类,在应用程序中使用,如果要在asp.net中有,只需把HttpRuntime.Cache改为HttpContext.Current.Cache即可,代码如下:

复制代码

using System;

/// <summary>

/// author:Stone_W

/// date:2010.12.1

/// desc:缓存的管理类

/// 注意:要添加对引用 System.Web

/// </summary>

public class MyCacheTools : System.Web.SessionState.IRequiresSessionState

{

    #region 存入Cache

    /// <summary>

    /// 存入Cache

    /// </summary>

    /// <param name="key">缓存key</param>

    /// <param name="value">缓存的值</param>

    /// <param name="time_HH">存xx小时</param>

    /// <returns>是否执行成功[bool]</returns>

    public static bool SetCache(string key, object value, int time_HH)

    {

        bool result = false;

        try

        {

            DateTime dt = DateTime.Now.AddHours(time_HH);

            System.Web.HttpRuntime.Cache.Insert(key, value, null,

                dt, System.Web.Caching.Cache.NoSlidingExpiration);

            result = true;

        }

        catch (Exception ex) { }

        return result;

    }

    #endregion

    #region 取得Cache

    /// 取得Cache

    /// <param name="key">key</param>

    /// <returns>object类型</returns>

    public static object GetCache(string key)

        return System.Web.HttpRuntime.Cache.Get(key);

    #region 查询Cache是否存在

    /// 查询Cache是否存在

    /// <param name="key">key 值</param>

    /// <returns>bool</returns>

    public static bool IsCacheExist(string key)

        object temp = System.Web.HttpRuntime.Cache.Get(key);

        if (null != temp)

}

本文转自王磊的博客博客园博客,原文链接:http://www.cnblogs.com/vipstone/archive/2010/12/01/1893619.html,如需转载请自行联系原作者

继续阅读