首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用appsettings.custom.json覆盖appsettings.json

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

Stack Overflow用户
提问于 2022-10-26 09:50:57
回答 2查看 84关注 0票数 0

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

代码语言:javascript
复制
        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文件的顺序,但没有成功。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-26 13:28:13

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

我过去常常在program.cs的Main方法中读取配置文件:

代码语言:javascript
复制
            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中创建的配置被添加到应用程序的其余部分:

代码语言:javascript
复制
            return Host.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration((hostingContext, config) =>
            {
                config.AddJsonFile(DefaultAppSettingsJson, optional: false, reloadOnChange: true)
                    .AddJsonFile(CustomAppSettingsJson, optional: true, reloadOnChange: true);
            })
票数 0
EN

Stack Overflow用户

发布于 2022-10-26 10:16:29

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

代码语言:javascript
复制
var config = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile(DefaultAppSettingsJson, optional: false, reloadOnChange: true)                
                .AddJsonFile(CustomAppSettingsJson, optional: true, reloadOnChange: true)
                .Build()

https://youtu.be/sBQlIcdLM0s

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74205759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档