【发布时间】:2019-03-25 06:48:59
【问题描述】:
我的项目是基于 .Net Framework 4.0 构建的,我们使用内置 ObjectCache 作为 MemoryCache,它在 System.Runtime.Caching 中实现。
它之前工作正常,但突然停止在缓存中保存任何内容。当我在缓存上调用Set 方法时,它不会保存任何内容,并且Result View 始终为空,表示Enumeration yielded no results。我仔细检查了代码,发现那里没有任何问题。这真的很简单,如下所示:
var policy = new CacheItemPolicy();
cache = new MemoryCache("MyCache");
cache.Set("item", "item value", policy);
var item = cache.Get("item");
cache.Remove("item"); //when removal is required
但是,在同一台机器上针对 .Net Framework 4 的示例应用程序可以正常工作。我想知道是否有其他人经历过类似的行为,我怎样才能找到这个问题的核心?有什么工具可以提供帮助吗?
【问题讨论】:
-
如果您将
MemoryCache的名称更改为其他名称,它会重新开始工作吗? -
您的结果视图指的是什么,您在哪里将其分配给获取的获取值,在此代码中没有。您是否将
item设为空。还有什么CacheItemPolicy -
@FrankerZ Cache 实例注册在 Container 中并传递。奇怪的是,当我用新名称注册缓存时。解决的问题仍然是“默认”命名缓存。我需要检查它从哪里获取缓存。
-
@MrinalKamboj 我指的是
Result View,我们可以在调试时看到。在将项目设置为缓存后立即为空。如果我调用cache.GetCount()我得到 0。CacheItemPolicy被初始化为其默认值。 -
即使低于三行连续的代码在我的项目中也不起作用。
Cache = new MemoryCache("MyCache"); CachingPolicy = new CacheItemPolicy(); Cache.Set("item", "value", CachingPolicy);它将“默认”名称分配给缓存并且不设置值。可能是程序集或框架中的内部错误。
标签: c# .net caching memorycache objectcache