无法解析类型“Microsoft.Extensions.Caching.Memory.IMemoryCache”的服务

15 .net c# asp.net .net-core webapi

我有一个WEB API使用.NET 6的系统。我使用MemoryCache来存储数据。但是当我运行 Api 时,出现以下错误:

无法解析类型“Microsoft.Extensions.Caching.Memory.IMemoryCache”的服务

我的控制器:

public class myContoroler : Controller
{
    private readonly MemoryCache _memoryCache = new MemoryCache(optionsAccessor: null);

    
   [HttpPost]
    public async Task<IActionResult> myAPI(Model modelS)
    {
      var users = _memoryCache.Get("UserData")
      ...
    }

 }
Run Code Online (Sandbox Code Playgroud)

小智 36

在您的Startup.cs文件中,您需要介绍MemoryCache

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMemoryCache();
        .
        .
        .
    }
Run Code Online (Sandbox Code Playgroud)

如果没有Startup.cs文件,这应该在Program.cs(在 中.NET 6.0,Startup.cs 类被删除,Program.cs 类是注册应用程序和中间件的依赖项的地方。)

 builder.Services.AddMemoryCache();
Run Code Online (Sandbox Code Playgroud)

还建议使用依赖注入来MemoryCache在控制器中使用:

public class myContoroler : Controller
{
    private readonly IMemoryCache _memoryCache;

    public myContoroler(IMemoryCache memoryCache)
    {
         _memoryCache = memoryCache;
    }

    [HttpPost]
    public async Task<IActionResult> myAPI(Model modelS)
    {
        var users = _memoryCache.Get("UserData")
        ...
    }

}
Run Code Online (Sandbox Code Playgroud)