You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8控制台应用DI报错:无法解析ILoggerFactory服务

修复方法

问题根源

本地化模块默认使用的ResourceManagerStringLocalizerFactory,其构造函数要求注入ILoggerFactory,但你的DI容器中没有注册该服务,导致无法创建这个工厂类,进而引发依赖解析失败。

具体修复步骤

1. 注册空日志工厂

添加一个不输出任何日志的ILoggerFactory实现,满足本地化的依赖需求:

using Microsoft.Extensions.Logging.Abstractions;

ServiceCollection services = new();

// 注册空日志工厂,不需要实际日志输出
services.AddSingleton<ILoggerFactory, NullLoggerFactory>();

services.AddLocalization(options => options.ResourcesPath = "Localization");

services.AddSingleton<ILocalizationService, LocalizationService>();
services.AddScoped<IEntityService, EntityService>();

var provider = services.BuildServiceProvider();

2. 改用DI容器获取服务

不要手动new EntityService,而是让DI容器帮你创建实例并注入依赖:

// 替换手动实例化的代码
IEntityService service = provider.GetRequiredService<IEntityService>();

注意事项

  • NullLoggerFactory属于Microsoft.Extensions.Logging.Abstractions包,确保你的项目已引用该包(.NET 8控制台应用通常默认包含,若缺失可通过NuGet安装)。
  • 手动实例化服务会绕过DI的依赖管理,这不仅容易引发此类错误,也违背了DI的设计初衷,建议始终通过容器获取服务实例。

内容的提问来源于stack exchange,提问作者ZotNet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:48:10