Центральный файл конфигурации - appsettings.json
, и у вас может быть несколько файлов, таких как appsettings.Production.json
и т. Д., Которые будут загружены и переопределены с помощью настроек appsettings.json
.
Например
// Set up configuration sources.
var builder = new ConfigurationBuilder()
.SetBasePath(hostEnv.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{hostEnv.EnvironmentName}.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
Все, что вам нужно, чтобы получить эту работу является переменной средой для установки типа среды (см документации here).
У вас также могут быть переменные окружения, которые переопределяют, если вы добавите AddEnvironmentVariables()
в конфигуратор. Так что если у вас есть appsettings.json из
{
"Data" {
"Default" {
"ConnectionString" : "..."
}
}
}
и хотите переопределить с помощью переменной окружения, вы бы установить переменную окружения под названием «Данные: По умолчанию: ConnectionString», и это значение переопределяет настройки в appsettings.config и appsettings.Production.config со значением из переменной среды.
Подробнее вы можете найти в официальной документации here.
Это имеет смысл, но как бы вы переключались между средами при развертывании? Как динамически изменять значение hostEnv.EnvironmentName при развертывании в dev/staging/production? Спасибо. –
Просто установите переменную. В Windows 'setx Hosting: Environment Staging' или' export Hosting__Environment = Staging' (обратите внимание на двойное подчеркивание!) В Linux. Удостоверьтесь, что у вас есть вызов AddEnvironmentVariables() при создании конфигурации, иначе он не будет работать. – Tseng
Спасибо. Где я могу найти документацию (ссылки на некоторые статьи или блоги) по этой теме? –