使用appsettings.custom.json覆盖appsettings.json



我有一个ASP.NET Core API,它在配置中从appsettings.json文件中读取。这是作为Windows服务运行的,可以安装/卸载。这意味着更新将覆盖appsettings.json文件。为了解决这个问题,我希望能够创建一个appsettings.custom.json,它只包含我想要不同值的appsettings.json中的设置。所以基本上这个appsettings.custom.json文件应该否决appsettings.json中的设置。我一直在玩,但使用的设置总是来自appsettings.json,它基本上忽略了appsettings.coustom.json。


private const string CustomAppSettingsJson = "appsettings.custom.json";
private const string DefaultAppSettingsJson = "appsettings.json";
Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(DefaultAppSettingsJson, optional: false, reloadOnChange: true)
.AddJsonFile(CustomAppSettingsJson, optional: true, reloadOnChange: true)
.Build();

这样的事情可能发生吗?我能在文件中按层次顺序排列吗?

我尝试切换json文件的添加顺序,但没有成功。

最后一个提供程序优先,因此您需要交换顺序。

var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(DefaultAppSettingsJson, optional: false, reloadOnChange: true)                
.AddJsonFile(CustomAppSettingsJson, optional: true, reloadOnChange: true)
.Build()

https://youtu.be/sBQlIcdLM0s

问题是这些文件没有添加到注册选项类的启动中使用的配置中。

我曾经在程序的Main方法中读取配置文件。cs:

var config = new ConfigurationBuilder()
.AddJsonFile(DefaultAppSettingsJson, optional: false, reloadOnChange: true)
.AddJsonFile(CustomAppSettingsJson, optional: true, reloadOnChange: true)
.Build();

然而,这个配置没有传递给startup.cs,因此没有注入到我的依赖项中。默认情况下,appsettings.json文件被添加到应用程序中的配置中,这引起了我的困惑。

将以下代码添加到program.cs中的CreateHostBuilder方法中,确保将program.cs创建的配置添加到应用程序的其余部分:

return Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.AddJsonFile(DefaultAppSettingsJson, optional: false, reloadOnChange: true)
.AddJsonFile(CustomAppSettingsJson, optional: true, reloadOnChange: true);
})

最新更新