Выполните итерацию и прочитайте все ключи appsettings в ядре asp. net - PullRequest
0 голосов
/ 25 февраля 2020

Мне добавили некоторые настройки в мои appsettings. json файл моего asp. net core 3.0 web api проекта, и файл выглядит примерно так:

{
  "Logging":{..},
  "AllowedHosts": "*",
  "Section1": {
     "Key1": "Value1",
     "Key2": "Value2",
     ....
  }
}

Я хочу перебрать все ключи в этом конкретном разделе, Раздел 1, и выполнить с ними некоторые действия. Я попробовал следующее, но это не работает:

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

ConfigurationManager.AppSettings не содержит ничего, как видно на скриншоте ниже: enter image description here

Что еще мне нужно сделать, чтобы сделать эту работу?

Я пробовал var v = this._configuration.GetSection("Section1").GetSection("Key1");, где _configuration имеет тип IConfiguration, и он работает, как ожидалось. Но опять же, как я уже упоминал, я не хочу этого, вместо этого я хочу перебрать весь список ключей в настройках приложения и выполнить с ними какое-то действие.

Любая помощь будет полезна.

1 Ответ

0 голосов
/ 25 февраля 2020

Я использовал это в моем файле program.cs, и он правильно подобрал значение в файле appsettings.json, который вы также можете попробовать следующим образом.

Program.cs

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

appsettings. json

{
  "https_port": 443,
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...