Zoe*_*Zoe 4 windows environment-variables .net-core
我知道其他人已经发布了这个问题,但是我所看到的解决方案都没有出现在我的案例中。我有一个 ASP.NET WebAPI 应用程序。我已经能够通过 Visual Studio Publish 将它发布到两个不同的开发服务器。在两台目标服务器上,我通过 Windows GUI 将 ASPNETCORE_ENVIRONMENT 环境变量设置为 Development,应用程序选择它,使用我的 appSettings.Development.json 设置,并按预期工作。
现在我将它部署到我的测试服务器。在该服务器上,我通过 Windows GUI 将 ASPNETCORE_ENVIRONMENT 环境变量设置为测试,但是当应用程序运行时,它总是显示托管环境:生产。我已经按照一篇文章的建议检查了我的 launchSettings.json 文件,但其中没有将环境变量设置为生产。由于 Production 是默认设置,我没有在任何地方设置该值的代码。
我成功部署到我的开发服务器和我失败的部署到我的测试服务器都是通过从 Bamboo 执行的 dotnet publish 完成的。我不知道为什么在我的测试服务器上运行的应用程序没有选择 ASPNETCORE_ENVIRONMENT 测试设置。
我在周末想到的其他一些细节可能相关,也可能不相关。
VS 发布到 Windows Server 2008 R2,调试版本,按预期工作。目标服务器将 ASPNETCORE_ENVIRONMENT 设置为 Development,应用程序日志报告 Hosting environment: Development,并且 appSettings.Development.json 设置生效。
VS 发布和 Bamboo 部署(通过 dotnet 发布)到 Windows Server 2016,调试版本,按预期工作。我在这台服务器上有两个站点实例。一种依赖于 ASPNETCORE_ENVIRONMENT 变量,该变量设置为 Development,并按预期工作。另一个通过 applicationHost.config 中的设置覆盖其应用程序池的环境变量。在这两种情况下,应用程序都会正确选择环境变量并反映正确的托管环境。
Bamboo 部署通过 dotnet 发布到 Windows Server 2012,发布版本,没有按预期工作。应用程序将托管环境报告为生产(默认),表明它无法获取我设置的环境变量。应用程序失败,因为它缺少 appSettings.Development.json 中的应用程序设置。
所以失败的场景是不同的服务器 O/S,但由于它适用于 2008 和 2016,我认为它适用于 2012 年。失败的场景是发布版本与调试版本,但我不会认为这会影响运行时行为重新配置。
我认为这不是 launchSettings.json 问题,因为这可能会影响我的所有目标部署,而不仅仅是我的测试服务器。我已经通过命令行确认环境变量设置正确。我真的不想要一个基于 web.config 的解决方案,我认为我不需要它并且需要特定于环境的转换。
我尝试过的其他一些事情没有帮助:将构建类型从 Release 更改为 Debug (因为它在工作环境中是 Debug )。还是不行。尝试记录其他环境变量,但应用程序在到达我的记录代码之前就死了。仍在努力... 尝试在 applicationHost.config 中设置环境变量,就像我在我的开发服务器上所做的那样,但测试服务器是 Windows Server 2012 和 IIS 8,并且不支持 applicationHost.config 中的元素。(开发服务器是 Windows Server 2016 和 IIS 10,它确实支持 applicationHost.config 中的元素。)尝试过 VS 发布与 Bamboo 部署。还是不行。我比较了开发和测试服务器上的 .NET Core 安装。两者都有主机版本 2.2.3,相同的提交。开发服务器安装了 SDK;测试服务器没有。开发服务器安装了多个运行时版本,最新的是 2.2.3。测试服务器只安装了 2.2.3 运行时。主要区别似乎是 SDK,我认为我不需要安装 SDK 来读取环境变量。
我想我之前已经解决了这个问题。我必须在我的 IIS 应用程序池高级设置中将 LoadUserProfile 设置为 True。我不确定为什么这是真的,因为我读过的内容说您需要它来读取用户环境变量,而我的应用程序无法读取系统环境变量。但是,无论如何,当我在 IIS 应用程序池上将 LoadUserProfile 设置为 true 时,应用程序会正确读取 ASPNETCORE_ENVIRONMENT 系统环境变量,并且应用程序按预期工作。
您是否尝试过在网络配置中设置此值?
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1851 次 |
| 最近记录: |