我有一个简单的控制台应用程序,其中包含一个托管服务:
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
文件:
在开发服务器上,我将使用开发
环境,在生产服务器上使用生产
环境。在我的本地机器上,我将使用本地
环境。这很简单。
我将通过ASPNETCORE_ENVIRONMENT
(操作系统环境变量)来获取它。我使用Linux,在我的shell(zsh)配置文件中: 当我在终端输入
$ echo $ASPNETCORE_ENVIRONMENT
时,显示Local
。
但是当我启动我的控制台应用程序时,$ dotnet run // in the project folder
它正在尝试使用Production
环境启动。参见调试输出: