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

VS2022发布ASP.NET Core应用至Azure未签出web.config发布失败

问题原因

Visual Studio 2022 发布ASP.NET Core应用到Azure时,默认会在发布阶段自动更新本地项目根目录的web.config,写入AspNetCoreModuleV2托管规则、应用启动路径、运行时版本、托管模型等发布相关配置。如果你使用的是需要显式签出才可修改文件的版本控制系统(如TFVC),未签出的web.config默认是只读状态,VS无法写入配置就会直接中断发布流程。

可用解决方案

按推荐优先级从高到低排列:

  • 禁用发布流程自动修改本地web.config(一劳永逸)
    这个方案不需要改动版本控制配置,也不会给文件自动生成额外的修改记录,适合不希望每次发布都改动web.config的场景:

    1. 右键解决方案资源管理器中的项目,选择「编辑项目文件」打开.csproj配置文件
    2. 在全局<PropertyGroup>节点下添加如下配置项:
      <IsWebConfigTransformDisabled>true</IsWebConfigTransformDisabled>
      
    3. 保存.csproj后重新加载项目即可生效。

    注意:启用这个配置前,请确认你本地签入版本库的web.config已经包含ASP.NET Core在IIS/Azure App Service上运行的标准配置,核心配置参考如下:

    <?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=".\你的应用入口程序集.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
        </system.webServer>
      </location>
    </configuration>
    
  • 开启版本控制自动签出功能
    如果你使用TFVC作为版本控制系统,可以开启VS的自动签出配置,发布时需要修改web.config会自动完成签出,无需手动操作:

    1. 打开VS顶部菜单栏「工具」→「选项」
    2. 依次展开「源代码管理」→「Azure DevOps Server」(旧版本显示为Team Foundation Server)
    3. 勾选「编辑时自动签出项」,保存设置即可。
  • 临时取消文件只读属性(仅应急使用)
    找到本地项目目录下的web.config文件,右键打开属性面板,取消勾选「只读」选项,即可让发布流程正常写入文件。注意这个方法在下次从版本库拉取最新代码后,文件会重新被标记为只读,需要重复设置,不推荐长期使用。

内容的提问来源于stack exchange,提问作者Thomas Woelfer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:24:23