小编Łuk*_*ski的帖子

如何从 ASP.Net Core 配置文件合并多个数组?

我想在我的应用程序中动态加载和注册服务。为此,我需要能够从解决方案中的不同项目加载配置文件,并将它们中的值合并到单个 json 数组中。不幸的是,默认情况下 ASP.Net Core 配置会覆盖值。

我使用以下代码注册文件(Program.cs 文件的一部分):

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration((webHostBuilderContext, configurationbuilder) =>
            {
                var env = webHostBuilderContext.HostingEnvironment;
                configurationbuilder.SetBasePath(env.ContentRootPath);
                configurationbuilder.AddJsonFile("appsettings.json", false, true);

                var path = Path.Combine(env.ContentRootPath, "App_Config\\Include");

                foreach(var file in Directory.EnumerateFiles(path, "*.json",SearchOption.AllDirectories))
                {
                    configurationbuilder.AddJsonFile(file, false, true);
                }
                configurationbuilder.AddEnvironmentVariables();
            })
            .UseStartup<Startup>();
Run Code Online (Sandbox Code Playgroud)

该代码*.jsonApp_Config\Include目录中搜索所有带有扩展名的文件,并将它们全部添加到配置生成器中。

文件的结构如下所示:

{
  "ServicesConfiguration": {
    "Services": [
      {
        "AssemblyName": "ParsingEngine.ServicesConfigurator, ParsingEngine"
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我得到了主要部分,ServicesConfiguration然后Services用具有一个属性的对象数组AssemblyName

要读取这些值,我使用ServicesConfiguration带列表的类:

public class ServicesConfiguration
    {
        public List<ServiceAssembly> …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core

6
推荐指数
1
解决办法
2998
查看次数

标签 统计

asp.net-core ×1

c# ×1