.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
相关产品推荐
相关产品推荐

