ASP.NET Core中的内存缓存立即清空

时间:2017-05-20 02:29:48

标签: caching asp.net-core-mvc

我正在尝试为我的ASP.NET核心应用程序实现临时ip阻止,我读过的有关如何执行此操作的所有内容都使用了缓存。

我已经按照本文了解asp.net核心中的内存缓存: https://docs.microsoft.com/en-us/aspnet/core/performance/caching/memory

代码运行正常,但在操作完成后立即清空缓存。

如果在此行上设置断点:

_cache.Set(CacheKeys.Entry, cacheEntry, cacheEntryOptions);

我可以看到_cache确实具有适当的价值。但是,下次重新加载页面时,该值已消失。无论我将过期时间设置为多长时间,或者即使我设置了

CacheItemPriority.NeverRemove
cacheEntryOptions中的

我还尝试注册一个回调,用于从缓存中驱逐该项目,以查看它是否因内存压力而被立即驱逐。但是,永远不会调用回调。

我需要启用一些服务器选项来允许缓存吗?

1 个答案:

答案 0 :(得分:0)

我今天遇到了类似的问题。并发现缓存仅保存该值的引用。因此,如果将列表保存到缓存中,然后稍后清除列表。缓存的列表也将被清除,但是密钥仍然存在。 源代码在这里:https://source.dot.net/#Microsoft.Extensions.Caching.Abstractions/MemoryCacheExtensions.cs,bc5684b7eae179d4