c# - 如何为控制台应用程序设置 ASPNETCORE_ENVIRONMENT?
问题描述
我有以下包含托管服务的简单控制台应用程序:
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
(OS 环境变量)的帮助下得到它。
我使用 Linux,在我的 shell (zsh) 配置文件中我有:
当我输入我的终端时,$ echo $ASPNETCORE_ENVIRONMENT
我有Local
. 但是当我启动我的控制台应用程序时
$ dotnet run // in the project folder
它试图从Production
环境开始。查看调试输出:
那么如何设置环境呢?为什么 Os 变量不起作用?
解决方案
根据 .Net Core 3.0 及更高版本的文档,主机配置由以 DOTNET_ 为前缀的环境变量提供(例如,DOTNET_ENVIRONMENT)。
如果这不起作用,您还可以尝试在您的个人资料中设置 launchSettings.json 中的环境变量。
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"DOTNET_ENVIRONMENT" : "Development"
}
推荐阅读
- python - 如何在 Python 中下载文件?
- python - 打印一个随机数 * n 次(所有不同的数字)
- python - “锻炼”对象没有“锻炼”属性
- python - 如何在运行 Flask 时让 python 日志库在控制台中打印日志?
- asp.net - 如何找出 DynamoDb 表的属性类型?
- mysql - 如何在 MySQL 中使用创建的列作为带有 CASE 子句的 ORDER BY 的参数?(#42S22 错误)
- text - 对于使用 Three.JS 构建的 VR 应用程序,是否有任何替代方法可以提供更好的性能?
- c# - OpenIddict Asp.net Core 5.0 如何在刷新令牌流中获取主体关联
- postgresql - 如何将一列添加到 postgresql 模式中的所有表
- c# - 使用并行代码时全局变量的性能问题