我有两个解决方案:
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);
答案 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个不同的应用程序将具有不同的缓存实例
要在MemoryCache
和Console1
之间发送数据,您需要他们使用Interprocess Communication
/ Sockets
/等进行通信...
您可能还想继承ObjectCache
并自行实施通信层。