我使用PowerShell将值“Test”设置为ASPNETCORE_ENVIRONMENT,但是当我启动应用程序时,它从launchSettings.json获取值。
[Environment]::SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Test", "Machine")
如果我从launchSettings.json中删除该值,则该值将更改为“Production”,而不是“Test”。
我做错了什么?
我会将它部署到AWS Beanstalk上的两个不同的应用程序,我将发送一个脚本文件来更改环境变量。
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
我的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"
}
}
}
答案 0 :(得分:3)
根据docs,这是预期的行为:
可以在项目的
Properties\launchSettings.json
文件中设置本地计算机开发的环境。在launchSettings.json中设置的环境值将覆盖在系统环境中设置的值。
所以问题的答案(“我做错了什么?”)如下:
你不应该在生产中使用launchsettings.json
(所以只需删除它并忽略源代码控制或修改部署脚本,这样它就不会复制这个文件)。
launchsettings.json
是一种便于在开发机器上轻松测试的工具。
答案 1 :(得分:2)
我可以通过执行PowerShell命令和以下代码来获取值“Test”:
var environment = Environment.GetEnvironmentVariable(
"ASPNETCORE_ENVIRONMENT",
EnvironmentVariableTarget.Machine);