将配置文件的一部分加载到 net 5.0 中的字典中

Load section of config file into dictionary in net 5.0

我必须在 net 5.0 中开发一个不是我开发的应用程序,我不知道。

我想在配置文件中添加一个部分并将其加载到字典中。

这是配置文件中的部分:

{
  "MyApp": {
    "ServiceExceptions": [
        { "Key1": "Value1" },
        { "Key2": "Value2" }
    ]
  }
}

此代码加载配置:

public static IConfiguration GetConfiguration(string name)
{
    IConfiguration oConfiguration = null;
    string basePath = Path.GetDirectoryName(typeof(SharedHelper).Assembly.Location);
    string configPath = Path.Combine(basePath, "Config");

    string fileConfig = string.Format("{0}.{1}.json", name, Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"));

    oConfiguration = new ConfigurationBuilder()
                           .SetBasePath(configPath)
                           .AddJsonFile(fileConfig, optional: false, reloadOnChange: true)
                           .Build();
        return oConfiguration;
    }

这是要加载以绑定字典的代码,但 myExceptions 为空:

_Configuration = GetConfiguration("BD.Authentication.DWA");
Dictionary<string, string> myExceptions = null;
_Configuration.GetSection("MyApp:ServiceExceptions").Bind(myExceptions);
Debug.WriteLine(myExceptions.Count); // throws exception null reference

某处加载了数据,但我不知道如何拉出

只需将配置文件移动到:

{
  "MyApp": {
    "ServiceExceptions": 
        { "Key1": "Value1" },
        { "Key2": "Value2" }
  }
}

并检索值:

var serviceTypeExceptions = _Configuration.GetSection("MyApp:ServiceExceptions").Get<Dictionary<string, string>>();