Конфигурация по умолчанию и объединение конфигурации

Последнее обновление: 21.12.2021

Применяемый для создания приложения объект WebApplicationBuilder уже предоставляет некоторую конфигурацию по умолчанию. Посмотрим, что представляет подключаемая по умолчанию конфигурация:

Конфигурация по умолчанию в ASP.NET Core и C#

Эта конфигурация загружается из разных источников в следующем порядке:

  • Сначала в качестве провайдера конфигурации устанавливается объект класса ChainedConfigurationProvider, который добавляет объект IConfiguration в качестве источника конфигурации и который фактически соединяет все далее применяемые провайдеры конфигурации в одну цепочку.

  • Далее загружается конфигурация из файла appsettings.json

  • Затем загружается конфигурация из файла appsettings.[Environment].json, где [Environment] передает название окружения, например, appsettings.Production.json и appsettings.Development.json, благодаря чему мы можем задать конфигурацию для разных состояний проекта

  • Если проект запущен в окружении с именем "Development", загружается конфигурация App secrets (секретные настройки)

  • Затем загружаются переменные среды

  • В конце загружаются аргументы командной строки

Как мы видим, объект конфигурации может использовать одновременно сразу несколько источников и провайдеров конфигурации. Все подключемые источники конфигурации считываются в том порядке, в котором они были добавлены. Если разные источники конфигурации содержат одинаковые ключи, то используется значение, последнего добавленного источника конфигурации. Например, в данном случае значения из appsettings.Develoment.json перекроют значения с теми же ключами из appsettings.json.

И в своем приложении мы можем также объединять конфигурационные настройки из разных источников:

var builder = WebApplication.CreateBuilder();
var app = builder.Build();

builder.Configuration
    .AddJsonFile("config.json")
    .AddXmlFile("config.xml")
    .AddIniFile("config.ini")
    .AddInMemoryCollection(new Dictionary<string, string>
{
    { "name", "Sam"},
    { "age", "32"}
}); ;

app.Map("/", (IConfiguration appConfig) => $"{appConfig["name"]} - {appConfig["age"]}");

app.Run();
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850