我有一个ASP.NET核心API,它从appsettings.json文件中读取配置。这是作为Windows服务运行的,可以安装/卸载。这意味着更新将覆盖appsettings.json文件。为了解决这个问题,我希望能够创建一个appsettings.custom.json,它只包含来自appsettings.json的设置,我想要一个不同的值。因此,基本上,这个appsettings.custom.json文件应该从appsettings.json中取消设置。我一直在玩,但是使用的设置总是来自appsettings.json,它基本上忽略了appsettings.custom.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文件的顺序,但没有成功。
发布于 2022-10-26 13:28:13
问题是文件没有添加到注册选项类的启动中使用的配置中。
我过去常常在program.cs的Main方法中读取配置文件:
var config = new ConfigurationBuilder()
.AddJsonFile(DefaultAppSettingsJson, optional: false, reloadOnChange: true)
.AddJsonFile(CustomAppSettingsJson, optional: true, reloadOnChange: true)
.Build();但是,这个配置没有传递给startup.cs,也没有注入到我的依赖项中。默认情况下,appsettings.json文件被添加到应用程序中的配置中,这给我造成了混乱。
将下面的代码添加到CreateHostBuilder方法的program.cs中,确保在program.cs中创建的配置被添加到应用程序的其余部分:
return Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.AddJsonFile(DefaultAppSettingsJson, optional: false, reloadOnChange: true)
.AddJsonFile(CustomAppSettingsJson, optional: true, reloadOnChange: true);
})发布于 2022-10-26 10:16:29
最后一个提供程序优先,因此您需要交换顺序。
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(DefaultAppSettingsJson, optional: false, reloadOnChange: true)
.AddJsonFile(CustomAppSettingsJson, optional: true, reloadOnChange: true)
.Build()https://stackoverflow.com/questions/74205759
复制相似问题