如何在.Net Core中加载多个配置文件

时间:2018-05-23 11:13:23

标签: c# asp.net-core configuration-files

我想从.Net核心中间件的循环中的文件夹中加载多个配置文件。

我知道我们可以像appSettings.json一样命名加载一个或多个配置文件,如上所述here

但在我的情况下,如果我有多个配置文件夹,并且每个文件夹最初都要加载多个配置文件。如果我开始命名每个文件夹中的每个文件加载,它将是很多行和更麻烦。我希望在循环中加载所有配置文件夹。

请询问是否需要更多信息。 感谢

2 个答案:

答案 0 :(得分:3)

您可以使用something like Directory.EnumerateFilesConfigureAppConfiguration来实现此目的。这是一个简单的例子:

WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
    .ConfigureAppConfiguration(configurationBuilder =>
    {
        foreach (var jsonFilename in Directory.EnumerateFiles("/path/to/jsons", "*.json", SearchOption.AllDirectories))
            configurationBuilder.AddJsonFile(jsonFilename);
    })
    .Build();

ConfigureAppConfiguration的调用允许向配置系统添加其他提供程序。在这里,我们只是添加/path/to/jsons目录(和子目录)中的所有* .json文件作为附加配置源。

答案 1 :(得分:2)

好吧,我不得不使用ConfigurationBuilder类的扩展方法来解决它。 希望它对有需要的人有帮助。

 public static IConfigurationBuilder AddMultipleJsonFiles(this IConfigurationBuilder configurationBuilder, string path, string prefix)
    {
        string[] files = System.IO.Directory.GetFiles(path, prefix + "-*.json");

        foreach (var item in files)
        {
            configurationBuilder.AddJsonFile(item);
        }
        return configurationBuilder;
    }

还有;

 var builder = new ConfigurationBuilder().AddMultipleJsonFiles(Directory.GetCurrentDirectory()+ "/Configurations/", "service");
            _configuration = builder.Build();