在IIS上运行.NET Core 2时修改自动生成的web.config文件
解决WebAPI发布后自动配置WebDAVModule的方案
我来给你几个靠谱的自动解决办法,再也不用每次发布后手动修改web.config啦:
直接在本地项目web.config中预先配置
这是最省心的方案,打开你本地项目里的web.config,直接把这段配置加到<system.webServer>节点下:<modules runAllManagedModulesForAllRequests="false"> <remove name="WebDAVModule" /> </modules>这样每次通过FTP发布时,这个配置会直接同步到服务器上,不用再手动调整。放心,本地开发环境基本不会受影响——IIS Express默认没启用WebDAV模块,这个配置不会干扰你的本地调试。
使用Web.config变换(适配多环境发布)
如果你需要区分开发、生产等不同环境,不想在开发环境的web.config里加这段配置,可以用Visual Studio自带的Web.config变换功能:- 右键项目→添加→新建项→选择「Web配置变换」,生成对应发布环境的配置文件(比如
Web.Release.config) - 在这个文件里添加XDT变换语法,让发布时自动注入配置:
这样只有发布Release版本时,这段配置才会被应用到服务器的web.config中,本地开发的配置保持原样。<system.webServer> <modules runAllManagedModulesForAllRequests="false" xdt:Transform="SetAttributes"> <remove name="WebDAVModule" xdt:Transform="InsertIfMissing" /> </modules> </system.webServer>
- 右键项目→添加→新建项→选择「Web配置变换」,生成对应发布环境的配置文件(比如
服务器端全局禁用WebDAV模块
如果这台服务器上的所有WebAPI项目都有405问题,可以直接在IIS全局层面解决,一劳永逸:- 打开IIS管理器,点击服务器根节点(不是单个网站)
- 找到「模块」功能,在列表里找到
WebDAVModule,右键删除 - 再进入「处理程序映射」,删除所有和WebDAV相关的处理程序
注意:要确认服务器上没有其他依赖WebDAV的网站,再执行这个操作。
自动化脚本修改(适合复杂发布流程)
如果你用了CI/CD工具做自动化发布,可以写个简单的PowerShell脚本,在发布完成后自动连接FTP服务器修改web.config:
核心逻辑是:下载服务器上的web.config→添加或修改modules节点→重新上传。或者在服务器上设置文件监听脚本,当web.config被更新时自动注入配置。这个方案适合已经有成熟自动化流程的场景。
内容的提问来源于stack exchange,提问作者Matthew Flynn
相关产品推荐
相关产品推荐

