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

.NET 7无Startup.cs的Web API中IOptions依赖注入配置问题

解决.NET 7 Web API顶级语句下IOptions依赖注入问题

错误原因分析

你的配置存在三个核心问题:

  1. Configure泛型参数错误:Configure<IOptions<DbConfig>>写法错误,正确的泛型参数应为目标配置类DbConfig,而非IOptions<DbConfig>。
  2. 配置节名称不匹配:appsettings.json中配置节点是DatabaseConnection,但你在配置时指定的是ConnectionStrings,导致无法正确绑定配置。
  3. 冗余配置构建:.NET 7的WebApplicationBuilder默认已加载appsettings.json、环境变量等配置源,无需手动创建ConfigurationBuilder重复构建。

正确配置步骤

  1. 修正Program.cs中的DI配置
// 顶级语句下,builder是默认的WebApplicationBuilder实例,已自动加载配置
builder.Services.Configure<DbConfig>(builder.Configuration.GetSection("DatabaseConnection"));

// 后续WebApplication构建代码保持不变
var app = builder.Build();
// ...中间件配置等代码
app.Run();
  1. SqlClient构造函数无需修改
    你的构造函数写法符合规范,依赖注入会自动解析IOptions<DbConfig>实例:
public SqlClient(IOptions<DbConfig> config)
{
    _configuration = config;
}
  1. 确保DbConfig类与配置节点匹配
    确认DbConfig的属性名称与appsettings.json中的键完全一致(大小写敏感):
public class DbConfig
{
    public string DataSource { get; set; }
    public string UserID { get; set; }
    public string Password { get; set; }
    public string InitialCatalog { get; set; }
}

关键说明

  • Configure<T>方法的作用是将指定配置节绑定到T类型,并自动注册IOptions<T>到依赖注入容器,后续依赖IOptions<T>的类即可自动获取实例。
  • 若需自定义配置源(如加载额外配置文件),可通过builder.Configuration.AddXXX()扩展方法添加,无需重新构建整个配置对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:55:05