Как загрузить appSettings. {Environment} .json до того, как среда станет известна? (AspNetCore) - PullRequest
1 голос
/ 24 мая 2019

Согласно блогу Microsoft переменная ASPNETCORE_ENVIRONMENT загружается в следующем порядке:

  1. файл appsettings.json
  2. appsettings. {Env.EnvironmentName} .json file
  3. Файл локальных пользовательских секретов
  4. Переменные среды
  5. Аргументы командной строки (или эквивалентно launchSettings.json)

и «Последний загруженный ключ выигрывает».

Вопросы:

Но как файл appsettings. {Env.EnvironmentName} .json можно загрузить до того, как станет известно окончательное окружение ?

Может ли случиться так, что я установлю среду 'Staging' через командную строку и загрузим appSettings.Development.json, потому что на шаге 2 она еще не известна?

1 Ответ

2 голосов
/ 24 мая 2019

Существует два набора конфигурации для приложения ASP.NET Core:

  1. Конфигурация для WebHost.
  2. Конфигурация для самого приложения.

Сначала создается конфигурация WebHost ( source ):

_config = new ConfigurationBuilder()
    .AddEnvironmentVariables(prefix: "ASPNETCORE_")
    .Build();

Как показывает исходный код, в конфигурации для WebHost используются только переменные среды и только те, с префиксом ASPNETCORE_. Неудивительно, что одной из этих переменных среды является ASPNETCORE_ENVIRONMENT.

Чуть позже по ходу дела реализуется реализация IHostingEnvironment. Это заканчивается использованием _config для получения параметра конфигурации с именем environment, который поступает из переменной ASPNETCORE_ENVIRONMENT. Если такого значения нет, по умолчанию используется значение Production.

.

Затем создается конфигурация для самого приложения. На шаге 2 в вашем вопросе значение env.EnvironmentName соответствует значению IHostingEnvironment, которое я уже упоминал. Если вы должны были установить значение среды, например, Staging в качестве аргумента командной строки, он не изменит значение, используемое в конфигурации WebHost, поскольку это относится только к конфигурации приложения.

Andew Lock более подробно рассказывает о том, как все это работает, а также демонстрирует, как настроить WebHost для использования дополнительных источников конфигурации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...