.NET6使appsettings.json成为必需,而不是默认的可选。

3
WebAppllicationBuilder构建配置并默认添加一些提供程序,例如:
  • "appsettings.json"的JsonConfigurationProvider或
  • "secrets.json"的JsonConfigurationProvider
它们都是可选参数。
我需要将"appsettings.json"设置为必需,而不是可选的。当然,我可以添加其他json文件提供程序并使用新设置重新映射相同的文件。但如果有一种方法可以修改默认提供程序并将其中一个设置为可选:false,代码看起来会更好。
var builder = WebApplication.CreateBuilder(args);
builder.Configuration     
        .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
        // here I need to add "secrets.json" again, because secrets are loaded by
        // default json provider but overwritten by above
        // .AddUserSecrets<Program>(optional: true)
        // (I put the same key in both files, just marked "from-secrets" in "appsettings.json" to indicate what is needed)
        .AddEnvironmentVariables("whatever_");

如何修改默认提供程序的选项?
马雷克
1个回答

2

我的目前技巧是

var builder = Host.CreateDefaultBuilder(args)
    .ConfigureAppConfiguration((_, builder) =>
    {
        builder
            .Sources.OfType<JsonConfigurationSource>()
            .First(x => x.Path == "appsettings.json")
            .Optional = false;
    })

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接