Перейти к содержанию

Загрузка файлов конфигурации для конкретного окружения

Значение 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 г.

Комментарии

Комментарии