System.Web.Caching.Cache在模型中抛出null异常

Sna*_*yes 4 c# caching data-caching asp.net-mvc-3

也许这个问题应该很容易,但事实并非如此.我在ASP.NET中阅读了使用System.Web.Caching.Cache类的问题.

我有一个单身人士课程:

private System.Web.Caching.Cache _cache;
private static CacheModel _instance = null;

private CacheModel() {
   _cache = new Cache();
}

public static CacheModel Instance {
         get {
            return _instance ?? new CacheModel();
         }
      }

public void SetCache(string key, object value){
   _cache.Insert(key, value);
}
Run Code Online (Sandbox Code Playgroud)

如果,在我的代码中的任何其他位置,我调用以下内容:

CacheModel aCache = CacheModel.Instance;
aCache.SetCache("mykey", new string[2]{"Val1", "Val2"});  //this line throws null exception
Run Code Online (Sandbox Code Playgroud)

为什么第二行抛出空引用异常?

也许我在代码的某个地方犯了一些错误?

谢谢.

Gra*_*mas 9

您不应该使用该Cache类型初始化您自己的实例:

此API支持.NET Framework基础结构,不能直接在您的代码中使用.

如果不直接了解为什么会出现空引用异常,并且我之前遇到过这个问题,那么它与Web应用程序的基础结构和生命周期紧密相关:

每个应用程序域创建一个此类的实例,只要应用程序域保持活动状态,它就仍然有效.有关此类实例的信息可通过HttpContext对象的Cache属性或Page对象的Cache属性获得.

最重要的是,不要System.Web.Caching.Cache以这种方式直接使用该类型 - 访问现有的缓存实例或使用类似企业库缓存应用程序块的替代方法.