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

Asp.Net Core 2中用PowerShell修改web.config失败求助

嘿,我来帮你搞定这个ASP.NET Core发布配置的问题——你遇到的情况我之前也碰到过,大概率是PowerShell操作XML的步骤有疏漏,导致配置没正确生效。

问题根源分析

你的PowerShell代码有几个关键问题:

  • 节点没插入到正确位置:modules节点必须放在web.config的<system.webServer>节点下,原代码只创建了节点但没指定父节点,等于白忙活
  • 属性名不完整:你代码里的runAllManagedModulesForAl...明显是截断了,完整属性名是runAllManagedModulesForAllRequests,拼写错了肯定不生效
  • 没保存修改:修改XML文档后必须调用Save()方法,不然所有变更都只在内存里,不会写入文件

修正后的完整PowerShell脚本

# 先准确定位web.config的路径,用Join-Path比拼接字符串更稳妥
$webConfigPath = Join-Path -Path (Get-Item -Path ".").FullName -ChildPath "Bemfeito.Services.WebApi\obj\Release\netcoreapp2.0\PubTmp\Out\web.config"

# 加载XML文档
$doc = [xml](Get-Content -Path $webConfigPath)

# 找到system.webServer节点,这是modules的父节点
$webServerNode = $doc.configuration."system.webServer"

# 创建modules节点并设置属性
$moduleNode = $doc.CreateElement("modules")
$moduleNode.SetAttribute("runAllManagedModulesForAllRequests", "false")

# 创建remove子节点并指定要移除的模块名
$removeNode = $doc.CreateElement("remove")
$removeNode.SetAttribute("name", "WebDAVModule")

# 把remove节点嵌套到modules里,再把modules节点加到system.webServer下
$moduleNode.AppendChild($removeNode) | Out-Null
$webServerNode.AppendChild($moduleNode) | Out-Null

# 最后一定要保存修改!
$doc.Save($webConfigPath)

额外的稳妥方案

如果执行脚本后还是没生效,可能是发布过程会覆盖obj目录下的webConfig。这种情况下,直接修改项目根目录的web.config更靠谱,把这段配置提前加进去,发布时就会自动包含:

<configuration>
  <!-- 其他现有配置 -->
  <system.webServer>
    <!-- 其他server配置 -->
    <modules runAllManagedModulesForAllRequests="false">
      <remove name="WebDAVModule" />
    </modules>
  </system.webServer>
</configuration>

内容的提问来源于stack exchange,提问作者Matthew Flynn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:34:00