ObjectCache不适用于多个解决方案项目?

时间:2015-10-05 10:41:08

标签: c# caching

我有两个解决方案:

  • Soultion1我有Console1.csproj
  • Solution2我有Console2.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我尝试从缓存中获取值我得到null,为什么本地缓存不会持久存在?

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

2 个答案:

答案 0 :(得分:2)

您无法从该应用程序的另一个实例访问缓存。要做到这一点,你需要使用appfabric或redis缓存之类的东西。现在,您正在运行“本地”缓存,只能访问Console1,Console2无法访问它。它不是分布式缓存系统。

MemoryCache仅适用于托管它的应用程序。

我建议您使用AppFabric或Redis缓存或NCache。这些是用于允许多个源访问全局缓存的最常见的。

答案 1 :(得分:1)

You get null because the item is not found

  

返回值

     

类型:System.Object

     

如果条目存在,则由key标识的缓存条目的引用;否则,null。

(mainFunction.functionParts).push_back(&P)课程 每个进程 ,这意味着 2个不同的应用程序将具有不同的缓存实例

要在MemoryCacheConsole1之间发送数据,您需要他们使用Interprocess Communication / Sockets /等进行通信...

您可能还想继承ObjectCache并自行实施通信层。