2015-10-05 62 views
1

我有兩個解決方案:ObjectCache不適用於多個解決方案項目?

  • Soultion1Console1.csproj
  • Solution2Console2.csproj

Solution1項目Console1.csproj我已增值到緩存 並想用得到這些值Solution2我有 Console2.csproj但在Console2.csproj我得到空

Console1.csproj

ObjectCache cache = MemoryCache.Default; 

CacheItemPolicy policy = new CacheItemPolicy(); 
policy.AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(10.0); 
cache.Set("mykey", "myvalue", policy); 

Console2.csproj我試圖讓從緩存中我得到空,價值爲什麼這麼本地緩存中不堅持?

ObjectCache cache = MemoryCache.Default; 
object mykey = cache.Get("mykey", null); 
+0

什麼讓你認爲內存緩存,不像所有其他變量和類實例,將在另一個程序中可用? – nvoigt

回答

1

You get null because the item is not found

返回值

類型:System.Object

到由鍵標識,如果該條目存在的高速緩存條目的引用;否則爲空。

MemoryCache類的工作每個進程這意味着2個不同的應用也會有不同的緩存實例

爲了Console1Console2你需要他們使用Interprocess Communication/Sockets /等通信之間發送數據...

您可能還需要從ObjectCache繼承,並實現通信層自己。

2

您無法從應用程序的其他實例訪問緩存。要做到這一點,你需要使用appfabric或redis緩存等。現在您正在運行「本地」緩存,並且只能通過Console1訪問,Console2無法訪問它。它不是一個分佈式緩存系統。

MemoryCache僅適用於託管它的應用程序。

我建議你使用AppFabric或Redis緩存或NCache。這些是用來允許多個源訪問全局緩存的最常見的。

相關問題