IOptions无法从appsettings.json加载配置,依赖注入报错求助
解决IOptions注入失败问题
问题根源
抛出Unable to resolve service for type 'IOptions<MyAppSettings>'异常的核心原因是:未在DI容器中注册配置类与配置文件的绑定关系,导致服务提供者无法找到IOptions<MyAppSettings>的实例。
修复步骤
在Program.cs中注册配置服务
在构建服务集合时,添加配置绑定代码,将appsettings.json中的配置映射到MyAppSettings类,并自动注册IOptions<MyAppSettings>服务:修改后的Program.cs完整代码:
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; namespace IOptions_test { static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); var config = new ConfigurationBuilder() .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .Build(); var services = new ServiceCollection(); // 新增:绑定配置并注册IOptions服务 services.Configure<MyAppSettings>(config); services.AddTransient<Form1>(); using var serviceProvider = services.BuildServiceProvider(); var mainForm = serviceProvider.GetRequiredService<Form1>(); Application.Run(mainForm); } } }确保配置文件可被读取
在Visual Studio中右键appsettings.json文件 → 属性 → 设置复制到输出目录为「如果较新则复制」或「始终复制」,避免运行时程序找不到配置文件。
验证修复
重新运行项目,Form1构造函数中的IOptions<MyAppSettings>会被正常注入,_settings将正确加载appsettings.json中的配置值,label1会显示预期的配置内容。
内容的提问来源于stack exchange,提问作者manfrinmarco
相关产品推荐
相关产品推荐

