You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure App Service 中 web.config 被自动添加环境变量配置问题咨询

问题根因

  • 你遇到的自动插入配置是ASP.NET Core内置的Web SDK的默认行为:当dotnet publish执行时,如果当前进程环境中存在名为EnvironmentName或ASPNETCORE_ENVIRONMENT的变量,SDK会自动在生成的web.config中插入对应的环境变量配置项。
  • Azure Pipelines中你定义的environmentName构建变量会自动作为环境变量暴露给构建进程,因此触发了上述自动配置逻辑,导致产物中的web.config被额外插入了配置。本地执行命令时没有对应环境变量,所以不会生成该配置。
  • 你无法直接修改实例上的web.config是因为开启了WEBSITE_RUN_FROM_PACKAGE模式,该模式下站点根目录完全只读,所有修改都需要调整构建产物后重新发布。

解决方案

方案1:彻底禁用web.config自动转换(最符合你的需求)

在你的ASP.NET Core项目的.csproj文件中加入以下配置,即可完全关闭Web SDK对web.config的自动修改逻辑,不会额外插入任何环境变量配置:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <!-- 加在现有PropertyGroup节点下 -->
    <IsWebConfigTransformDisabled>true</IsWebConfigTransformDisabled>
  </PropertyGroup>
</Project>

该配置生效后,后续构建生成的web.config会完全保留你代码库中的原始内容,不会被自动修改。

方案2:显式指定发布时的环境名

如果你不想修改项目文件,也可以在dotnet publish命令中显式指定环境名参数,强制生成的配置值为你需要的Production:

dotnet publish --configuration Release --output D:\a\1\s/dotnet-publish-output /p:EnvironmentName=Production

补充说明

如果你使用的是ASP.NET Core默认的环境名读取逻辑,请注意标准的环境变量名称是ASPNETCORE_ENVIRONMENT,而非你配置的ASPNETCORE_ENVIRONMENTNAME。App Service中配置的应用设置优先级高于web.config中定义的环境变量,如果变量名正确的话,正常情况下App Service的配置会覆盖web.config中的值,你可以检查是否是变量名拼写错误导致配置未生效。

内容的提问来源于stack exchange,提问作者Luke Puplett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:15:03