C# 环境变量没有像我希望的那样改变
我使用PowerShell将值“Test”设置为ASPNETCORE_环境,但当我启动我的应用程序时,它从launchSettings.json获取值C# 环境变量没有像我希望的那样改变,c#,asp.net-core,C#,Asp.net Core,我使用PowerShell将值“Test”设置为ASPNETCORE_环境,但当我启动我的应用程序时,它从launchSettings.json获取值 [Environment]::SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Test", "Machine") 如果我从launchSettings.json中删除该值,该值将更改为“生产”,而不是“测试” 我做错了什么 我将把它部署到AWS Beanstalk上的两个不同应用程序中,并发送
[Environment]::SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Test", "Machine")
如果我从launchSettings.json中删除该值,该值将更改为“生产”,而不是“测试”
我做错了什么
我将把它部署到AWS Beanstalk上的两个不同应用程序中,并发送一个脚本文件来更改环境变量
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
My launchSettings.json
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:60511/",
"sslPort": 44392
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "myapp",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"MonitoraApi": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "myapp",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:60512"
}
}
}
我可以通过执行PowerShell命令和以下代码获得值“Test”:
var environment = Environment.GetEnvironmentVariable(
"ASPNETCORE_ENVIRONMENT",
EnvironmentVariableTarget.Machine);
这是预期的行为,根据: 本地机器开发环境可以在项目的
Properties\launchSettings.json
文件中设置。launchSettings.json中设置的环境值覆盖系统环境中设置的值
因此,你的问题(“我做错了什么?”)的答案如下:
您不应该在生产环境中使用launchsettings.json
(因此只需将其从源代码管理中删除并忽略,或者修改部署脚本,使其不会复制此文件)。
launchsettings.json
是一种便于在开发机器上进行简单测试的工具 你用过吗。您可以尝试向我们显示一些代码。是否将其添加到运行ASP服务的用户的环境中?是否在同一powershell脚本中运行您的应用程序?Powershell只能为当前会话设置环境变量,它们在脚本结束时被还原。您完全理解我的疑问。谢谢!!!究竟为什么我必须告诉GetEnvironmentVariable
使用EnvironmentVariableTarget.Machine
?在找到你的答案之前,我已经用头撞了这堵墙1.5天了。但愿我能投更多的票。