Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Net Core MemoryCache未按请求重置_C#_Asp.net Core_Memorycache - Fatal编程技术网

C# Net Core MemoryCache未按请求重置

C# Net Core MemoryCache未按请求重置,c#,asp.net-core,memorycache,C#,Asp.net Core,Memorycache,.Net核心3.0。我有一个注射IMemoryCache的回购协议。回购被登记为暂时性回购。我希望每个请求都能清除/重置缓存,但这并没有发生。它保留从上一个请求插入的数据。如何使MemoryCache根据请求重新创建 public OrganizationRepository( IMemoryCache cache) { m_cache = cache; // cache still has data in entries for subsequent requests }

.Net核心3.0。我有一个注射IMemoryCache的回购协议。回购被登记为暂时性回购。我希望每个请求都能清除/重置缓存,但这并没有发生。它保留从上一个请求插入的数据。如何使MemoryCache根据请求重新创建

public OrganizationRepository(
   IMemoryCache cache)
{
    m_cache = cache;
    // cache still has data in entries for subsequent requests
}
注册:

services.AddTransient<IOrganizationRepository, OrganizationRepository>();
services.AddTransient();
这似乎有效:

services.AddScoped<MemoryCache, MemoryCache>();
services.addScope();
然后将其作为MemoryCache注入

这似乎有效:

services.AddScoped<MemoryCache, MemoryCache>();
services.addScope();

然后将其作为MemoryCache注入

我不知道为什么要使用IMemoryCache来存储每个请求的数据?因为缓存是一种有助于减少多个请求(而不是特定的一个请求)中的数据库往返次数的技术。有一些技术可以帮助解决您的情况,例如HttpContext.Items或通过自定义中间件编写您的上下文。每个请求注入的缓存没有意义。为每个请求创建一个新控制器。那么,你会在一个请求中缓存什么呢?@JohnathanLe,在我的例子中,我正在插入一堆行(单个请求),我希望在一个请求/每个请求期间将内容存储在缓存中。我正在寻找“短期缓存”,因此每个请求缓存usage@ShaneKm所以只要把它们放到HttpContext.Items中,就可以随时获取。缓存并不是在一个请求中使用的,缓存实例实际上是一个单实例。如果HttpContext.Items不适合您的想法,只需编写自定义中间件,注入自定义上下文并添加您想要的内容即可。我相信IMemoryCache默认注册,并且始终注册为singleton,这主要是因为它似乎是为这种用途而设计的。我不知道为什么要使用IMemoryCache来存储每个请求的数据?因为缓存是一种有助于减少多个请求(而不是特定的一个请求)中的数据库往返次数的技术。有一些技术可以帮助解决您的情况,例如HttpContext.Items或通过自定义中间件编写您的上下文。每个请求注入的缓存没有意义。为每个请求创建一个新控制器。那么,你会在一个请求中缓存什么呢?@JohnathanLe,在我的例子中,我正在插入一堆行(单个请求),我希望在一个请求/每个请求期间将内容存储在缓存中。我正在寻找“短期缓存”,因此每个请求缓存usage@ShaneKm所以只要把它们放到HttpContext.Items中,就可以随时获取。缓存并不是在一个请求中使用的,缓存实例实际上是一个单实例。如果HttpContext.Items不适合您的想法,只需编写自定义中间件,注入自定义上下文并添加您想要的内容即可。我相信IMemoryCache默认注册,并且始终注册为singleton,这主要是因为它似乎是为这种用途而设计的。