Asp.net-Mvc-2

如何檢查記憶體(System.Web.Cache)中是否存在項目?

  • June 2, 2016

你好,

要檢查密鑰是否已存在於記憶體中,我應該能夠執行以下操作:

if(Cache["MyKey"] != null)

然而這不起作用?如果我從 Cache 類創建一個實例,我將能夠以這種方式獲取對象:

cache.Get("MyKey") or cache["MyKey"]

但即使我像這樣檢查 null :

if(cache["MyKey"] != null)

它會拋出 NullRefException 嗎?

我究竟做錯了什麼?

編輯1:

這就是我實例化記憶體的方式

private Cache cache
       {
           get {
               if (_cache == null)
                   _cache = new Cache();
               return _cache; }
       }

檢查空值是如何測試某個鍵的對像是否在記憶體中。所以,

if(Cache["MyKey"] != null)

是正確的。

但是,您不應實例化新的 Cache 對象。你可以System.Web.HttpContext.Current.Cache改用。這是 Cache 的實例,位於應用程序域中。

來自MSDN

每個應用程序域創建一個此類的實例,只要應用程序域保持活動狀態,它就保持有效。有關此類實例的資訊可通過 HttpContext 對象的 Cache 屬性或 Page 對象的 Cache 屬性獲得。

引用自:https://stackoverflow.com/questions/4867385