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

.NET 6使用HostBuilder构建主机后如何获取IConfiguration配置值

.NET 6 控制台应用主程序获取IConfiguration实例方法

调用HostBuilder.Build()生成IHost实例后,通用宿主已经自动将IConfiguration以单例生命周期注册到DI容器中,不需要手动额外注册,直接通过宿主的Services属性即可获取实例。

具体实现代码

在你现有代码的Build()调用后追加以下逻辑即可:

var host = SvcBuilder.Build();

// 引入Microsoft.Extensions.DependencyInjection命名空间才能用GetRequiredService扩展方法
var configuration = host.Services.GetRequiredService<IConfiguration>();

// 读取配置示例
// 1. 读取层级键值
string configValue = configuration["CustomConfig:SubKey"];
// 2. 读取预设的连接字符串节点
string dbConnStr = configuration.GetConnectionString("MyDatabase");
// 3. 绑定强类型配置对象
// MyConfigOptions opts = configuration.GetSection("MyConfig").Get<MyConfigOptions>();

补充:注册服务阶段提前获取配置

如果你不需要等宿主构建完成,在ConfigureServices流程中就需要读取配置,可以直接通过方法传入的HostBuilderContext参数获取,不需要走容器解析:

.ConfigureServices((hostContext, services) =>
{
    // 直接从上下文取配置实例
    var config = hostContext.Configuration;
    
    services.AddLogging(configure => configure.AddConsole())
    .AddTransient<IStoreFactory, StoreCtxFactory>();
});

注意:从根服务容器host.Services解析服务时,仅建议解析单例生命周期的服务。IConfiguration默认就是单例注册,直接解析不会有生命周期异常问题;不要从根容器直接解析Scoped生命周期服务,否则会出现对象无法正常释放、状态异常的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 02:30:54