2017-07-18 102 views
0

我正在使用REST API中定價列表的系統,我們爲每個請求付費。所以,因爲這些價格不會經常變化,所以我將它們保存在內存緩存中。我的問題是這個緩存不刷新,他們刷新我不得不回收應用程序池。以下是我用來獲取價格的功能:Asp.Net內存緩存不刷新

public static List<PricingModel> GetItemPrices() 
{ 
    var cache = MemoryCache.Default; 
    string key = "ItemPrices"; 
    var val = cache[key] as List<PricingModel>; 
    if (val == null) 
    { 
     val = new List<PricingModel>(); 
     val = apiProxy.GetPrices(); 
     foreach (var price in val) 
     { 
      price.Price *= 100; 
     } 
     CacheItemPolicy policy = new CacheItemPolicy(); 
     policy.AbsoluteExpiration = DateTimeOffset.Now.AddHours(1); 
     cache.Set(new CacheItem(key, val), policy); 
    } 
    return val; 
} 

我是否在緩存策略中缺少某些內容以使其實際刷新?我究竟做錯了什麼?

感謝所有幫助

回答

0

你可以查看是否在你的代碼的任何其他地方相同的密鑰&值的分配情況?因爲這樣做會覆蓋警察&使其不會過期。

<cache disableExpiration="true"/> - is not set in your web.config? 
+0

@Immanueal在web.config中沒有任何關於緩存的內容。我要把它強制爲假,我會檢查密鑰,以確保不是這種情況 –

+0

重複密鑰不是問題我也強制禁用到期假。它沒有工作 –

+0

好的。雖然沒有太多相關的,請檢查這個[鏈接](https://stackoverflow.com/questions/16972641/expiring-a-cached-item-via-cacheitempolicy-in-net-memorycache)其中提到的UTC和持續時間看一下 – Immanuel