ObjectCache不适用于多个解决方案项目
本文关键字:解决方案 项目 不适用 适用于 ObjectCache | 更新日期: 2023-09-27 18:15:57
我有两个解决方案:
- 在
Soultion1
中我有Console1.csproj
- 在
Solution2
我有Console2.csproj
在Solution1
项目Console1.csproj
中,我已经将值添加到缓存中并希望得到这些值使用Solution2
我有Console2.csproj
但是在Console2.csproj
我得到null
In 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);
您不能从应用程序的另一个实例访问缓存。要做到这一点,你需要使用appfabric或redis缓存之类的东西。现在你正在运行的缓存是"本地的",只有Console1可以访问,Console2不能访问它。它不是一个分布式缓存系统。
MemoryCache只对承载它的应用程序可用。
我建议你使用AppFabric或Redis缓存或NCache。这些是最常用的,用于允许多个源访问全局缓存。
您得到null
,因为没有找到该项目:
返回值类型:系统。对象
如果缓存项存在,则用key标识该缓存项的引用;否则,null。
MemoryCache
class works per process这意味着2个不同的应用程序将有不同的缓存实例。
为了在Console1
和Console2
之间发送数据,您将需要它们使用Interprocess Communication
/Sockets
/等进行通信…
您可能还希望继承ObjectCache
并自己实现通信层。