zoukankan      html  css  js  c++  java
  • 缓存通用管理类 + 缓存 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
    /// <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 这个问题搞的我很痛苦,最后还是解决了,希望此篇文章对大家有用!

    关注下面二维码,订阅更多精彩内容。
    微信打赏
    关注公众号(加好友):

  • 相关阅读:
    单片机就那点资源,为啥还要用RTOS?
    JVM 虚拟机参数配置
    C# 多态virtual标记重写 以及EF6 查询性能AsNoTracking
    C# HttpClient发送请求获取接口数据
    C# Socket服务端和客户端通话
    C# 生成图片验证码 图片缩略图 水印
    ADO.NET 帮助类 参数传递 存储过程 分页
    hadoop单机部署
    tengine-sticky
    redis持久化
  • 原文地址:https://www.cnblogs.com/vipstone/p/1893619.html
Copyright © 2011-2022 走看看