我想从.Net核心中间件的循环中的文件夹中加载多个配置文件。
我知道我们可以像appSettings.json一样命名加载一个或多个配置文件,如上所述here
但在我的情况下,如果我有多个配置文件夹,并且每个文件夹最初都要加载多个配置文件。如果我开始命名每个文件夹中的每个文件加载,它将是很多行和更麻烦。我希望在循环中加载所有配置文件夹。
请询问是否需要更多信息。 感谢
答案 0 :(得分:3)
您可以使用something like Directory.EnumerateFiles
和ConfigureAppConfiguration
来实现此目的。这是一个简单的例子:
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();