Как настроить ASPNETCORE_ENVIRONMENT для консольного приложения? - PullRequest
1 голос
/ 13 февраля 2020

У меня есть следующее простое консольное приложение, которое содержит размещенную службу:

    public static async Task Main(string[] args)
    {
        using (var host = Host.CreateDefaultBuilder(args)
            .ConfigureServices((hostContext, services) =>
            {
                // db context
                services.AddEntityFrameworkNpgsql()
                    .AddDbContext<ApplicationDbContext>();

                // hosted services
                services.AddHostedService<ConsumeScopedServiceHostedService>();
                services.AddScoped<ProcessManuallySendings>();

                // services
                services.AddHttpClient<ISendPushService, SendPushService>(x
                    =>
                {
                    x.Timeout = TimeSpan.FromSeconds(65);
                });
            })
            .Build())
        {
            // Start the host
            await host.StartAsync();

            // Wait for the host to shutdown
            await host.WaitForShutdownAsync();
        }
    }
}

Это работает с моей базой данных, и это означает, что для этого требуется строка подключения. У меня есть три appsettings.json файла:

enter image description here

На сервере разработки я буду использовать среду Development, на производстве - Production. На моей локальной машине я собираюсь использовать Local. Это просто. Я собираюсь получить его с помощью ASPNETCORE_ENVIRONMENT (переменная среды ОС).

Я использую Linux и в моей оболочке (zsh) конфигурационный файл у меня есть:

enter image description here

Когда я набираю мой терминал $ echo $ASPNETCORE_ENVIRONMENT у меня Local. Но когда я запускаю свое консольное приложение

$ dotnet run // in the project folder

Оно пытается начать со среды Production. Смотрите выходные данные отладки:

enter image description here

Так как настроить среду? Почему переменная Os не работает?

Ответы [ 2 ]

3 голосов
/ 13 февраля 2020

Согласно документам для. Net Core 3.0 и выше, конфигурация хоста предоставляется из переменных среды с префиксом DOTNET_ (например, DOTNET_ENVIRONMENT).

Если это не так Кроме того, вы можете также попытаться установить переменную среды в launchSettings. json как это в вашем профиле.

"environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development",
    "DOTNET_ENVIRONMENT" : "Development"
}
2 голосов
/ 13 февраля 2020

С. NET Core 3, общий c хост использует префикс DOTNET_ , а не старый префикс ASPNETCORE_.

...