Как прочитать целый раздел из настроек приложения. json в ASP. NET Core 3.1? - PullRequest
2 голосов
/ 22 февраля 2020

Я хочу получить целый раздел из настроек приложения. json.

Это мои настройки приложения. json:

{
 "AppSettings": {
  "LogsPath": "~/Logs",
  "SecondPath": "~/SecondLogs"
  } 
}

C#:

var builder = new ConfigurationBuilder()
           .SetBasePath(Directory.GetCurrentDirectory())
           .AddJsonFile(this.SettingsFilesName);
        configuration = builder.Build();

Этот синтаксис работает нормально и возвращает "~ / Logs":

configuration.GetSection("AppSettings:LogsPath");

Но как мне получить все разделы "AppSettings"? Возможно ли это?

Этот синтаксис не работает и свойство value имеет значение null.

 configuration.GetSection("AppSettings");

ОБНОВЛЕНИЕ :

У меня нет модели и Прочитайте это в классе. Я ищу что-то вроде этого:

 var all= configuration.GetSection("AppSettings");

и использую его как

all["LogsPath"] or  all["SecondPath"]

, они возвращают мне свои значения.

1 Ответ

3 голосов
/ 22 февраля 2020

То есть специально

С

var configSection = configuration.GetSection("AppSettings");

configSection не имеет значения, только ключ и путь.

Когда GetSection возвращает соответствующий раздел, Value не заполняется. Key и Path возвращаются, когда секция существует.

Если, например, вы определяете модель для привязки данных секции к

class AppSettings {
    public string LogsPath { get; set; }
    public string SecondPath{ get; set; }
}

и привязки к секции

AppSettings settings = configuration.GetSection("AppSettings").Get<AppSettings>();

вы увидите, что весь раздел будет извлечен и заполнен моделью.

Это связано с тем, что раздел будет проходить по своим дочерним элементам и извлекать их значения при заполнении модели на основе сопоставления имен свойств с ключи в разделе.

var configSection = configuration.GetSection("AppSettings");

var children = configSection.GetChildren();

Ссылка Конфигурация в ASP. NET Core

...