Загрузка файлов конфигурации для конкретного окружения¶
Значение EnvironmentName определяется до того, как будет создан ConfigurationBuidler, переданный в ConfigureAppConfiguration. Это означает, что можно менять поставщики, добавляемые в построитель, в зависимости от EnvironmentName.
Распространенный шаблон — наличие необязательного файла appsettings.ENVIRONMENT.json для конкретного окружения. Например:
public class Program
{
public static void AddAppConfiguration(
HostBuilderContext hostingContext,
IConfigurationBuilder config)
{
var env = hostingContext.HostingEnvironment;
config
.AddJsonFile(
"appsettings.json",
optional: false)
.AddJsonFile(
$"appsettings.{env.EnvironmentName}.json",
optional: true);
}
}
Таким образом, значения, специфичные для какого-либо окружения, будут перезаписывать значения из глобального файла appsettings.json.
Еще один распространенный шаблон - удаление или добавление поставщиков конфигурации в зависимости от приложения:
public class Program
{
public static void AddAppConfiguration(
HostBuilderContext hostingContext,
IConfigurationBuilder config)
{
var env = hostingContext.HostingEnvironment;
config
.AddJsonFile(
"appsettings.json",
optional: false)
.AddJsonFile(
$"appsettings.{env.EnvironmentName}.json",
optional: true);
if(env.IsDevelopment())
{
config.AddUserSecrets<Startup>();
}
}
}
Также в зависимости от окружения можно настроить конвейер промежуточного ПО. Так было организовано использование компонента DeveloperExceptionPageMiddleware:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
}
/*дальнейшая настройка*/
}
Последнее обновление :
30 апреля 2023 г.
Дата создания : 30 сентября 2022 г.
Дата создания : 30 сентября 2022 г.