У меня есть следующее простое консольное приложение, которое содержит размещенную службу:
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
файла:
На сервере разработки я буду использовать среду Development
, на производстве - Production
. На моей локальной машине я собираюсь использовать Local
. Это просто. Я собираюсь получить его с помощью ASPNETCORE_ENVIRONMENT
(переменная среды ОС).
Я использую Linux и в моей оболочке (zsh) конфигурационный файл у меня есть:
Когда я набираю мой терминал $ echo $ASPNETCORE_ENVIRONMENT
у меня Local
. Но когда я запускаю свое консольное приложение
$ dotnet run // in the project folder
Оно пытается начать со среды Production
. Смотрите выходные данные отладки:
Так как настроить среду? Почему переменная Os не работает?