前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >缓存通用管理类 + 缓存 HttpContext.Current.Cache 和 HttpRuntime.Cache 的区别

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

作者头像
磊哥
发布2018-05-09 13:56:54
1.3K0
发布2018-05-09 13:56:54
举报
文章被收录于专栏:王磊的博客

  以前写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即可,代码如下:

代码语言:javascript
复制
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
    /// <summary>
    /// 取得Cache
    /// </summary>
    /// <param name="key">key</param>
    /// <returns>object类型</returns>
    public static object GetCache(string key)
    {
        return System.Web.HttpRuntime.Cache.Get(key);
    }
    #endregion

    #region 查询Cache是否存在
    /// <summary>
    /// 查询Cache是否存在
    /// </summary>
    /// <param name="key">key 值</param>
    /// <returns>bool</returns>
    public static bool IsCacheExist(string key)
    {
        bool result = false;

        object temp = System.Web.HttpRuntime.Cache.Get(key);
        if (null != temp)
        {
            result = true;
        }
        return result;
    }
    #endregion

}

ps:HttpContext.Current.Cache 为null 这个问题搞的我很痛苦,最后还是解决了,希望此篇文章对大家有用!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2010-12-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档