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

Caching ASP.NET内核中的内存缓存立即清空,caching,asp.net-core-mvc,Caching,Asp.net Core Mvc,我正在尝试为我的ASP.NET核心应用程序实现临时ip阻塞,我读到的关于如何实现这一点的所有内容都使用缓存 我跟随本文了解了asp.net core中的内存缓存: 代码运行正常,但缓存在操作完成后立即清空 如果在这条线上放置断点: _cache.Set(CacheKeys.Entry, cacheEntry, cacheEntryOptions); 我可以看到_cache确实具有正确的值。但是,下次重新加载页面时,该值将消失。无论我将过期时间设置为多长,或者 CacheItemPriorit

我正在尝试为我的ASP.NET核心应用程序实现临时ip阻塞,我读到的关于如何实现这一点的所有内容都使用缓存

我跟随本文了解了asp.net core中的内存缓存:

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

如果在这条线上放置断点:

_cache.Set(CacheKeys.Entry, cacheEntry, cacheEntryOptions);
我可以看到_cache确实具有正确的值。但是,下次重新加载页面时,该值将消失。无论我将过期时间设置为多长,或者

CacheItemPriority.NeverRemove
在cacheEntryOptions中

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


是否需要启用一些服务器选项以允许缓存

我今天遇到了类似的问题。并发现缓存只保存该值的引用。因此,如果您将列表保存到缓存中并稍后清除该列表。缓存列表也将被清除,但密钥仍然存在。
源代码在这里:

我今天遇到了类似的问题。并发现缓存只保存该值的引用。因此,如果您将列表保存到缓存中并稍后清除该列表。缓存列表也将被清除,但密钥仍然存在。
源代码如下:

您是否在DI中为内存缓存使用了正确的作用域?这听起来像是有范围的或暂时的。对于您的情况,您应该使用singleton。否则,每次创建控制器时,您的数据都会丢失。。。或者,是否处置缓存?你是否在代码周围使用
语句?@MichaC他不需要定义域,因为
AddMemoryCache
让它生成inI不知道如何定义域或我是否应该定义域。我并不是有意地处理缓存,但每次创建控制器时,缓存看起来都会被销毁。我没有在代码中使用using语句。我的代码与文章的代码完全相同。我已经尝试过安装nugget软件包,这些软件包使用缓存进行临时IP阻塞,正如我正在尝试的那样。据我所知,他们也有同样的问题。所以我猜这不是代码。我尝试了AspNetCoreRateLimit软件包-运气不好。我在ASP.NETCore2中也遇到了这个问题。它与我的开发环境中的IISExpress有关吗?您在DI中对内存缓存使用了正确的作用域吗?这听起来像是有范围的或暂时的。对于您的情况,您应该使用singleton。否则,每次创建控制器时,您的数据都会丢失。。。或者,是否处置缓存?你是否在代码周围使用
语句?@MichaC他不需要定义域,因为
AddMemoryCache
让它生成inI不知道如何定义域或我是否应该定义域。我并不是有意地处理缓存,但每次创建控制器时,缓存看起来都会被销毁。我没有在代码中使用using语句。我的代码与文章的代码完全相同。我已经尝试过安装nugget软件包,这些软件包使用缓存进行临时IP阻塞,正如我正在尝试的那样。据我所知,他们也有同样的问题。所以我猜这不是代码。我尝试了AspNetCoreRateLimit软件包-运气不好。我在ASP.NETCore2中也遇到了这个问题。它与我的开发环境中的IISExpress有关吗?