迭代并读取asp.net core中的所有appsettings键

The*_*der 6 asp.net asp.net-web-api asp.net-core asp.net-core-webapi

我在我的 asp.net core 3.0 Web api 项目的 appsettings.json 文件中添加了一些配置,该文件如下所示:

{
  "Logging":{..},
  "AllowedHosts": "*",
  "Section1": {
     "Key1": "Value1",
     "Key2": "Value2",
     ....
  }
}
Run Code Online (Sandbox Code Playgroud)

我想迭代这个特定部分(Section1)中的所有键并对它们执行一些操作。我尝试了以下方法,但它不起作用:

foreach (var key in ConfigurationManager.AppSettings.AllKeys)
                {
                    var key = ConfigurationManager.AppSettings["Key1"];
                    // perform some action
                }
Run Code Online (Sandbox Code Playgroud)

ConfigurationManager.AppSettings不包含任何内容,如下面的屏幕截图所示: 在此输入图像描述

我还需要做什么才能使这项工作成功?

我已经尝试过该类型的var v = this._configuration.GetSection("Section1").GetSection("Key1");位置并且它按预期工作。但同样,就像我提到的,我不想要这个,相反,我想迭代应用程序设置中的所有键列表并对它们执行一些操作。_configurationIConfiguration

任何帮助都会很棒。

Arp*_*ain -4

我在我的文件中使用了这样的方法program.cs,它可以正确地使用文件获取值,appsettings.json您也可以这样尝试。

程序.cs

IHost host = new HostBuilder()            
                 .ConfigureAppConfiguration((hostContext, configApp) =>
                 {
                     configApp.AddJsonFile($"appsettings.json", true);
                     configApp.AddJsonFile($"appsettings.{hostContext.HostingEnvironment.EnvironmentName}.json", true);
}
Run Code Online (Sandbox Code Playgroud)

应用程序设置.json

{
  "https_port": 443,
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}
Run Code Online (Sandbox Code Playgroud)

  • 这不是OP要求的 (3认同)