c# - 将 memorycache 注入 .NET 5 控制台应用程序
问题描述
我有一个 .NET 5 控制台应用程序,它将在后台工作人员中运行一个长时间运行的进程。我收到一个编译错误,提示:
“IServiceCollection”不包含“AddMemoryCache”的定义,并且找不到接受“IServiceCollection”类型的第一个参数的可访问扩展方法“AddMemoryCache”(您是否缺少 using 指令或程序集引用?)
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 类中,并打算在我的启动代码中注册它。注意 - 不注册 MemoryCache 会导致运行时出现依赖关系解析问题。
许多示例建议可以使用 AddMemoryCache,但是,我的应用程序不是显示大多数示例的 ASP.NET 应用程序。
我的工人阶级看起来像这样:
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 类中?有任何想法吗?
解决方案
要使用内存缓存,您必须确保项目具有对 Microsoft.Extensions.Caching.Memory.dll 程序集的引用。从扩展方法 AddMemoryCache()的文档中可以看出。
推荐阅读
- php - 状态未更新
- sql - SQL 删除 \n 并在一个命令中解析 JSON
- python - 带有 TfidfVectorizer 的 ColumnTransformer 产生“空词汇”错误
- css - sass 将根类添加到当前选择器
- google-apps-script - 如何编写 Google 表格脚本以自动删除不属于我的文件
- highcharts - 网络图遇上桑基图
- sql - 根据最新日期过滤表记录
- selenium - 如何使用 selenium webdriver 删除代理
- linux - 根据文件名排序文件
- php - 当我在论坛中发布来自 mysql 数据库的数据时,它们不会堆叠