我正在尝试为我的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中的。
我还尝试注册一个回调,用于从缓存中驱逐该项目,以查看它是否因内存压力而被立即驱逐。但是,永远不会调用回调。
我需要启用一些服务器选项来允许缓存吗?
答案 0 :(得分:0)
我今天遇到了类似的问题。并发现缓存仅保存该值的引用。因此,如果将列表保存到缓存中,然后稍后清除列表。缓存的列表也将被清除,但是密钥仍然存在。 源代码在这里:https://source.dot.net/#Microsoft.Extensions.Caching.Abstractions/MemoryCacheExtensions.cs,bc5684b7eae179d4