2017-03-13 16 views
3

私は私のASP.NET CoreアプリケーションでIMemoryCacheの標準的な使用法と考えています。なぜASP.Net CoreのIMemoryCacheのインスタンスを複数取得するのですか?

私が持っているstartup.csで

:私は私のコントローラで

services.AddMemoryCache(); 

を:

private IMemoryCache memoryCache; 
public RoleService(IMemoryCache memoryCache) 
{ 
    this.memoryCache = memoryCache; 
} 

しかし、私はデバッグを通過するとき、私はそれぞれに異なるアイテムを複数のメモリキャッシュで終わります1。メモリキャッシュはシングルトンだろうと思いましたか?私はthis.memoryCacheが異なるエントリが含まれて見ることができる二行目を打ったとき、私は、二つの異なるブラウザで2つのクライアントを実行している場合

public List<FunctionRole> GetFunctionRoles() 
{ 
    var cacheKey = "RolesList"; 
    var functionRoles = this.memoryCache.Get(cacheKey) as List<FunctionRole>; 
    if (functionRoles == null) 
    { 
     functionRoles = this.functionRoleDAL.ListData(orgId); 
     this.memoryCache.Set(cacheKey, functionRoles, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromDays(1))); 
    } 
} 

:コードサンプルを更新

+0

どうやってテストしましたか?より多くのコードを共有できますか? – levent

+0

@levent更新された質問 –

答えて

1

私はこれに理由が見つかりませんでした。しかし、さらに読むと、メモリ内の分散キャッシュを使用してIMemoryCacheからIDistributedCacheにスワップされ、問題は発生しなくなりました。後で複数のサーバーが必要な場合、このルートを使うと、私はredisサーバーに簡単に更新できます。

関連する問題