繁体   English   中英

为什么存在 aspNetCore web.config 部分时,launchSettings.json 配置文件中的 environmentVariables 不加载?

[英]Why do environmentVariables from launchSettings.json profiles not load when aspNetCore web.config sections exist?

我们最近将 .NET Core 2.1 Web App 升级到 .NET 3.1。 从那以后,我们在 launchSettings.json 中的配置文件无法正常工作。 具体来说,环境变量没有加载,特别是“ASPNETCORE_ENVIRONMENT”。 在本地调试以针对不同环境时,我们使用它来切换 appSettings.{Environment}.json。

在我的研究中,似乎 web.config 是这个问题的罪魁祸首。 作为上下文,我们在项目中保留了 web.config,以便我们可以为我们的部署定制一些东西。 有问题的配置文件使用 IISExpress,因此考虑了 web.config。

如果我删除 web.config,我可以切换启动配置文件并且它们生效。 但是,当 web.config 存在时,启动配置文件环境变量不会生效。

现在更奇怪的是,如果我从 web.config 中删除这一部分,启动设置中的环境变量将再次开始工作:

在此处输入图像描述

这可能与 Hosting Model 从 OutOfProcess(.NET 2.1 默认)更改为 InProcess(.NET 3.1 默认)有关。 事实上,如果我们强制项目的 hostingModel 为 OutofProcess,启动配置文件也可以工作,但如果可能,我们宁愿保留 InProcess。

那么这里发生了什么? 我们是否缺少一些迁移步骤? 我们遵循 MSDN 上的所有步骤,从这里开始直到 3.1: https://docs.microsoft.com/en-us/aspnet/core/migration/21-to-22?view=aspnetcore-3.1&tabs=visual -工作室

复制步骤

  1. 创建一个新的 ASP.NET 内核 Web 应用程序,3.1
  2. 创建一个使用 IISExpress 的 launchSettings.json 配置文件,并具有"environmentVariables": { "ASPNETCORE_ENVIRONMENT": "SomeTestValue" }
  3. 运行该启动配置文件并检查 Startup.cs 的ConfigureIWebHostEnvironment上的环境值。
  4. 请注意, env.EnvironmentName应与“SomeTestValue”匹配。
  5. 现在将以下 web.config 文件添加到您的项目中:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <remove name="aspNetCore" />
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" stdoutLogEnabled="false" arguments="%LAUNCHER_ARGS%" hostingModel="inprocess" />
  </system.webServer>
</configuration>
  1. 运行相同的配置文件并检查环境值。 它应该是您的机器默认值(在大多数情况下为“生产”,当没有找到/指定时这是默认值)。

修复:将 Visual Studio 2019 更新到 v16.6.3(提前 1 天发布!)

在此处输入图像描述

天哪,它是 Visual Studio。 我正在运行 VS 2019 16.6.2 ,我刚刚收到今天更新到 16.6.3 的通知,但推迟了它。 好吧,在研究了整个堆栈、github、msdn 等之后,我发现这些帖子让我看到这是 VS 的 16.6.2 版本中的一个错误(也可能是早期版本),以及刚刚发布的更新修复它。

问题的相关链接

ASP.Net Core MVC 需要 web.config 中的 <environmentVariables> 才能工作

这导致: https://github.com/dotnet/websdk/issues/564#issuecomment-644714341

这导致了关于 VS 更新的评论: https://github.com/dotnet/websdk/issues/1510#issuecomment-652012087 在此处输入图像描述

该评论中链接的文档没有具体提及此修复程序。 我找不到完整的发行说明。 https://docs.microsoft.com/en-us/visualstudio/releases/2019/release-notes#16.6.3

但无论如何,更新到 VS 2019 16.6.3 有效。 我可以保留我的 aspNetCore web.config 设置,并且现在可以正确加载启动配置文件环境变量。 嘘!

谈论更新的最佳时机......

此外,许多浏览器选项卡和 RAM 字节在寻找这个答案时失去了生命。 尊重。 在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM