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

.NET Core:appsettings.{environment}.json为何无法继承父appsettings.json?

.NET Core配置文件叠加逻辑:你的情况不是预期行为

这不是预期行为。在.NET Core的配置系统中,后续添加的配置源(比如环境特定的appsettings.development.json)只会覆盖与之前配置源重复的键/节点,之前配置源中独有的内容会被完整保留,不会丢失。

问题根源分析

你遇到的Section1.Key1无法读取的情况,大概率是父配置文件没有被正确加载,常见原因包括:

  • 未调用SetBasePath指定配置文件所在目录,导致配置构建器找不到appsettings.json
  • appsettings.json的属性未设置为复制到输出目录(右键文件→属性→复制到输出目录:选择“如果较新则复制”或“始终复制”)
  • 代码中配置文件名拼写错误(比如遗漏了.json扩展名)

正确的配置构建示例

确保配置构建逻辑包含基础路径设置,且文件名正确:

// 获取当前项目目录作为配置文件基础路径
var basePath = Directory.GetCurrentDirectory();

var configBuilder = new ConfigurationBuilder()
    .SetBasePath(basePath)
    // 加载基础配置文件,optional: false表示文件必须存在
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
    // 加载环境特定配置文件,optional: true表示文件不存在也不会报错
    .AddJsonFile("appsettings.development.json", optional: true, reloadOnChange: true);

var config = configBuilder.Build();

验证配置加载情况

如果仍有疑问,可以遍历所有配置项,确认父配置是否被正确加载:

foreach (var kvp in config.AsEnumerable())
{
    Console.WriteLine($"{kvp.Key} = {kvp.Value}");
}

正常情况下,你应该能看到Section1:Key1 = Value1和Section2:Key2 = OverriddenValue2的输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 16:46:02