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

ASP.NET Core如何在Startup.cs中移除WebDAVModule解决IIS报错

IIS部署时移除WebDAVModule的免手动改配置方案

首先明确:*WebDAVModule是IIS层面运行在托管应用之前的原生模块,无法直接通过Startup.cs里的C#代码移除,以下是几个可落地的一劳永逸方案:

方案1:项目预置web.config配置(最推荐,零额外成本)

  • 在你的Web项目根目录找到或新建web.config文件
  • 在<system.webServer>节点下提前写入移除模块的配置:
<configuration>
  <system.webServer>
    <modules>
      <remove name="WebDAVModule" />
    </modules>
    <!-- 保留你原有的其他配置,比如handlers、aspNetCore宿主配置等 -->
  </system.webServer>
</configuration>
  • 选中该文件,在属性面板设置:
    • 生成操作:内容
    • 复制到输出目录:如果较新则复制
      后续执行发布时,这个配置会自动同步到发布包中,不需要每次发布后手动修改。

方案2:发布配置转换(适合多环境差异化部署)

如果你不想让本地开发环境的配置带IIS相关规则,可以用发布转换自动注入配置:

  • 右键项目内的web.config文件,选择「添加配置转换」,Visual Studio会自动根据你现有的发布Profile生成对应环境的转换文件(比如web.Production.config对应生产环境发布配置)
  • 在转换文件中写入如下规则,发布时会自动把移除模块的配置合并到最终输出的web.config里:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.webServer>
    <modules>
      <remove name="WebDAVModule" xdt:Transform="InsertIfMissing" />
    </modules>
  </system.webServer>
</configuration>

方案3:IIS服务器层面配置(有服务器权限时一劳永逸)

如果你能操作部署用的IIS服务器,可以直接在IIS侧配置,完全不用改项目代码:

  • 全局生效:打开IIS管理器选中服务器根节点,找到「模块」功能,在列表中找到WebDAVModule右键删除即可,服务器上所有站点都不会再被该模块拦截
  • 单站点生效:选中你部署的目标站点,进入站点级别的「模块」列表,移除WebDAVModule即可,后续发布项目只要不重置站点的模块配置就不会失效

注:你遇到的「Method Not Found」本质是WebDAVModule提前拦截了对应请求,甚至篡改了请求方法,导致应用根本没收到对应请求就返回了错误,移除该模块后问题就会彻底解决。

内容的提问来源于stack exchange,提问作者Prathamesh Pitale

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:48:15