将 memorycache 注入 .NET 5 控制台应用程序
Injecting memorycache into a .NET 5 console app
我有一个 .NET 5 控制台应用程序,它将在后台工作程序中 运行 一个很长的 运行ning 进程。我收到编译错误提示:
'IServiceCollection' 不包含 'AddMemoryCache' 的定义,并且找不到可访问的扩展方法 'AddMemoryCache' 接受类型 'IServiceCollection' 的第一个参数(您是否缺少使用指令或程序集引用?)
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using MyBot;
using IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddLogging();
services.AddSingleton<User>();
services.AddMemoryCache();
services.AddHostedService<Worker>();
})
.Build();
await host.RunAsync();
我想将内存缓存注入我的 Worker class,并打算在我的启动代码中注册它。注意 - 未注册 MemoryCache 会导致 运行 时间出现依赖项解析问题。
很多示例建议可以使用 AddMemoryCache,但是,我的应用程序不是显示大多数示例的 ASP.NET 应用程序。
我的工人 class 看起来像这样:
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
private User _user;
private IMemoryCache _cache;
public Worker(ILogger<Worker> logger, User user, IMemoryCache memoryCache)
{
_logger = logger;
_user = user;
_cache = memoryCache;
}
如何在非 asp.net 应用程序中将 MemoryCache 对象注入到我的 Worker class 中?有什么想法吗?
要使用内存缓存,您必须确保项目具有对 Microsoft.Extensions.Caching.Memory.dll 程序集的引用。
在扩展方法AddMemoryCache()的documentation中可以看出。
我有一个 .NET 5 控制台应用程序,它将在后台工作程序中 运行 一个很长的 运行ning 进程。我收到编译错误提示:
'IServiceCollection' 不包含 'AddMemoryCache' 的定义,并且找不到可访问的扩展方法 'AddMemoryCache' 接受类型 'IServiceCollection' 的第一个参数(您是否缺少使用指令或程序集引用?)
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using MyBot;
using IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddLogging();
services.AddSingleton<User>();
services.AddMemoryCache();
services.AddHostedService<Worker>();
})
.Build();
await host.RunAsync();
我想将内存缓存注入我的 Worker class,并打算在我的启动代码中注册它。注意 - 未注册 MemoryCache 会导致 运行 时间出现依赖项解析问题。
很多示例建议可以使用 AddMemoryCache,但是,我的应用程序不是显示大多数示例的 ASP.NET 应用程序。
我的工人 class 看起来像这样:
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
private User _user;
private IMemoryCache _cache;
public Worker(ILogger<Worker> logger, User user, IMemoryCache memoryCache)
{
_logger = logger;
_user = user;
_cache = memoryCache;
}
如何在非 asp.net 应用程序中将 MemoryCache 对象注入到我的 Worker class 中?有什么想法吗?
要使用内存缓存,您必须确保项目具有对 Microsoft.Extensions.Caching.Memory.dll 程序集的引用。 在扩展方法AddMemoryCache()的documentation中可以看出。