问题描述
我正在开发ASP.NET Core API(.NET Core 3.1)。一切正常。当我使用八达通在消费者环境上部署应用程序时,即使我将appsettings.Production.json
设置为消费者,它也会读取appsettings.Uat.json
,而不是ASPNETCORE_ENVIRONMENT
。
web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processpath="dotnet" arguments=".\Mydll.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
launchsettings.json
{
"iisSettings": {
"windowsAuthentication": false,"anonymousAuthentication": true,"iisExpress": {
"applicationUrl": "http://localhost:50900","sslPort": 0
}
},"$schema": "http://json.schemastore.org/launchsettings.json","profiles": {
"IIS Express": {
"commandName": "IISExpress","launchbrowser": true,"launchUrl": "default","environmentvariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},"IIS_UAT Express": {
"commandName": "IISExpress","environmentvariables": {
"ASPNETCORE_ENVIRONMENT": "Consumer"
}
},"IIS_PRODUCTION Express": {
"commandName": "IISExpress","environmentvariables": {
"ASPNETCORE_ENVIRONMENT": "Production"
}
},"ISOXMLValidationApi": {
"commandName": "Project","environmentvariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},"applicationUrl": "https://localhost:5001;http://localhost:5000"
}
}
}
章鱼变量:
解决方法
您是否在任何地方使用ASPNETCORE_ENVIRONMENT Octopus变量?章鱼不会自动使用该名称设置ENV变量,因此您可能需要在部署过程中添加脚本来完成此操作。
如果尚未执行此操作,则可以在目标上使用单独的“运行脚本”步骤,或者在“部署软件包”步骤上使用自定义部署脚本功能。
有关自定义脚本和软件包中脚本的信息:
- https://octopus.com/docs/deployment-examples/custom-scripts
- https://octopus.com/docs/deployment-examples/custom-scripts/scripts-in-packages
还有一种可能,您不需要环境JSON配置文件,因为Octopus可以将变量值直接注入JSON配置文件中。
要使用PowerShell设置环境变量,其外观类似于
$aspEnvironment = $OctopusParameters["ASPNETCORE_ENVIRONMENT"]
[System.Environment]::SetEnvironmentVariable('ASPNETCORE_ENVIRONMENT',$aspEnvironment,[System.EnvironmentVariableTarget]::User)
请参阅https://www.tachytelic.net/2019/03/powershell-environment-variables/作为参考。