2017-07-18 8 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

web.configの@Immanuealキャッシュについては何もありません。私はそれを強制的に偽にするつもりですし、私はその事実でないことを確認するために鍵をチェックします –

+0

重複する鍵は問題ではありません私は強制的に失効を偽に強制しました。それは動作しませんでした –

+0

OK。これに関連することはほとんどありませんが、この[link](https://stackoverflow.com/questions/16972641/expiring-a-cached-item-via-cacheitempolicy-in-net-memorycache)をチェックしてください。見て – Immanuel

関連する問題