ASP.NET Core 5 API使用Web Deploy部署时如何排除自动生成的web.config
解决方案
方案1:在项目源代码中提前配置web.config
ASP.NET Core 项目发布时默认会自动生成web.config,你可以直接在项目根目录添加自定义的web.config,预先配置好HTTPS相关规则后,修改文件属性:
- 右键点击项目中的
web.config,选择「属性」 - 把「复制到输出目录」设置为「如果较新则复制」
- 把「生成操作」设置为「内容」
后续发布时会自动携带项目中预配置的web.config,不需要在服务器端手动修改,自然不会出现覆盖后配置丢失的问题。
方案2:配置Web Deploy跳过web.config同步
如果你必须单独在服务器端维护web.config配置,不希望发布操作覆盖该文件,可以修改发布配置文件跳过同步规则:
- 打开项目中对应发布配置的
.pubxml文件,默认存放在项目根目录的Properties/PublishProfiles文件夹下 - 在文件的
<PropertyGroup>节点内添加如下配置:
<ExcludeFilesFromDeployment>web.config</ExcludeFilesFromDeployment> <EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>
- 保存文件后重新发布,Web Deploy就不会再覆盖服务器上已有的web.config文件。
方案3:使用web.config转换规则
如果你需要针对不同发布环境配置不同的web.config规则,可以使用web.config转换功能:
- 在项目中添加对应环境的转换文件,比如生产环境对应
web.Release.config,在转换文件中配置生产环境需要的HTTPS规则 - 发布对应环境版本时,Visual Studio会自动合并基础web.config和对应环境的转换规则,生成最终的web.config,不需要手动修改服务器端文件
内容的提问来源于stack exchange,提问作者Vanik Hakobyan
相关产品推荐
相关产品推荐

