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

.NET 6控制台应用读取appsettings.json报错及正确配置方法

在.NET 6控制台应用中正确从appsettings.json获取配置并注入的方法

你遇到的CS1061错误核心原因是:IServiceCollection接口本身并不包含Configuration属性,无法直接通过services.Configuration访问配置内容。以下是两种可行的修复方案:

方案一:使用带上下文参数的ConfigureServices重载

修改ConfigureServices的lambda表达式,同时接收宿主上下文和服务集合两个参数,通过上下文直接获取配置:

private static IHostBuilder CreateDefaultBuilder()
{
    return Host.CreateDefaultBuilder()
               .ConfigureAppConfiguration(app =>
                {
                    app.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
                })
               .ConfigureServices((context, services) =>
                {
                    // 通过context.Configuration访问配置
                    services.Configure<MailSettings>(context.Configuration.GetSection("MailSettings"));
                });
}

方案二:提前构建配置实例并复用

在ConfigureAppConfiguration中先构建出配置实例,再在服务配置阶段使用:

private static IHostBuilder CreateDefaultBuilder()
{
    IConfiguration configuration = null;
    return Host.CreateDefaultBuilder()
               .ConfigureAppConfiguration(app =>
                {
                    app.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
                    // 构建配置实例并保存引用
                    configuration = app.Build();
                })
               .ConfigureServices(services =>
                {
                    services.Configure<MailSettings>(configuration.GetSection("MailSettings"));
                });
}

额外说明

Host.CreateDefaultBuilder()默认会自动加载以下配置源:

  • 项目根目录的appsettings.json
  • 项目根目录的appsettings.{环境名}.json
  • 开发环境中的用户机密
  • 环境变量
  • 命令行参数

如果你的配置文件是默认命名和路径,完全可以省略手动调用AddJsonFile的步骤,直接使用默认配置加载逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:10:53