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

Asp.Net Core 2发布时web.config被覆盖,如何解决WebDav拦截PUT请求?

解决Asp.Net Core 2中IIS 7 WebDav阻止PUT请求且web.config被覆盖的问题

我完全懂你这份困扰——每次发布后服务器自动生成的web.config都会把你手动添加的WebDav移除配置给覆盖掉,反复手动修改实在太折腾人了。其实Asp.Net Core 2已经提供了更省心的解决方案,不用再每次发布后去服务器上重复操作:

  • 利用项目根目录的web.config模板:这个模板文件是发布时生成服务器端web.config的基础,只要你在这里配置好移除WebDav的规则,发布后服务器上的web.config就会自动继承这些设置,再也不会被覆盖。

具体操作步骤:

  1. 打开你的Asp.Net Core 2项目根目录,找到web.config文件(如果没有的话直接新建一个即可);
  2. 在文件的<system.webServer>节点中,添加移除WebDav模块和处理程序的配置,完整示例如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="false">
      <!-- 移除WebDav模块 -->
      <remove name="WebDAVModule" />
    </modules>
    <handlers>
      <!-- 移除WebDav处理程序 -->
      <remove name="WebDAV" />
      <!-- 确保AspNetCore核心处理程序正常配置 -->
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\YourProject.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
  </system.webServer>
</configuration>
  1. 保存这个文件后,下次发布项目时,服务器上生成的web.config就会自动包含这些移除WebDav的配置,你再也不用手动去修改服务器上的文件了。

另外要注意,如果你用Visual Studio发布,确保发布配置里没有勾选“强制覆盖现有文件”这类会直接替换web.config的选项(默认情况下,发布工具会基于项目里的web.config模板生成目标文件,不会强制覆盖)。

这样就能一劳永逸解决WebDav阻止PUT请求,同时避免每次发布后重复配置的问题了。

内容的提问来源于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.25 08:01:49