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

使用WebDeploy部署ASP.NET至IIS,如何避免覆盖已存在的appsettings.Production.json?

解决Web Deploy发布时不覆盖已存在的appsettings.Production.json文件

方法一:修改项目文件配置,禁止自动推送该文件

直接在项目的.csproj文件中设置,让Web Deploy永远不推送appsettings.Production.json:

  1. 打开项目根目录下的.csproj文件,找到对应appsettings.Production.json的配置节点,修改为:
    <ItemGroup>
      <Content Include="appsettings.Production.json">
        <CopyToPublishDirectory>Never</CopyToPublishDirectory>
      </Content>
    </ItemGroup>
    
  2. 首次发布时,手动将该文件上传到服务器站点目录,或者临时把CopyToPublishDirectory改为Always,发布完成后改回Never。
  3. 后续发布时,Web Deploy会完全跳过这个文件,无论项目里的文件是否更新,都不会覆盖服务器上管理员编辑后的版本。

方法二:在Web Deploy发布配置中添加跳过规则

通过Visual Studio的发布配置直接排除该文件:

  1. 打开Visual Studio的发布窗口,切换到「设置」选项卡。
  2. 找到「文件发布选项」区域,点击「添加规则」。
  3. 选择「特定文件」,输入appsettings.Production.json并保存配置。
  4. 此后每次发布,Web Deploy都会忽略这个文件,彻底避免覆盖。

方法三:使用外部配置文件(进阶安全方案)

将生产环境的自定义配置移到站点外部的独立文件,彻底隔离代码库和生产配置:

  1. 在服务器上创建一个站点外的配置文件(比如D:\Configs\appsettings.Production.override.json),让管理员编辑这个文件。
  2. 在项目的Program.cs中添加加载外部配置的逻辑:
    var builder = WebApplication.CreateBuilder(args);
    // 加载默认配置后,追加外部override文件
    builder.Configuration.AddJsonFile(
        @"D:\Configs\appsettings.Production.override.json",
        optional: true,
        reloadOnChange: true);
    
  3. 项目里的appsettings.Production.json仅作为默认模板,发布时无需担心覆盖问题,同时生产配置也不会被提交到代码仓库,安全性更高。

内容的提问来源于stack exchange,提问作者Luke Vo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 21:13:19