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

如何配置ASP.NET Core实现两个已部署应用的差异化配置

ASP.NET 原生就支持自定义任意名称的部署环境,完全可以沿用你熟悉的 appsettings 配置覆盖逻辑,不需要额外修改核心启动代码,按以下步骤操作即可:

  • 第一步:创建自定义配置文件
    直接在项目根目录新建 appsettings.Demo.json,把演示站点需要覆盖的配置(包括独立的数据库连接字符串)写到这个文件中。右键该文件选择「属性」,将「复制到输出目录」设置为「如果较新则复制」,保证发布时这个文件会被打包到部署包中。
  • 第二步:部署时为不同站点指定环境标识
    ASP.NET 依靠 ASPNETCORE_ENVIRONMENT 环境变量识别当前运行环境,你只需要给正式站点和演示站点分别设置不同的环境变量值即可:
    • 正式站点设置变量值为 Production,默认加载 appsettings.Production.json 覆盖配置,没有额外覆盖配置的话会直接加载公共的 appsettings.json
    • 演示站点设置变量值为 Demo,会自动加载 appsettings.Demo.json 的配置覆盖公共配置
      不同部署场景的设置方式:
    • IIS 部署:在站点的 web.config 的 <aspNetCore> 节点下添加子节点:
      <environmentVariables>
        <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Demo" />
      </environmentVariables>
      
    • Linux systemd 托管:在对应的 .service 配置文件的 [Service] 段添加 Environment=ASPNETCORE_ENVIRONMENT=Demo
    • Docker 部署:启动容器时加参数 -e ASPNETCORE_ENVIRONMENT=Demo 即可
      本地测试时可以在 launchSettings.json 中新增启动配置,将环境变量设为 Demo,就能本地调试演示站点的配置逻辑。
  • 第三步:执行 EF Core Migrations 时指定环境
    直接在 dotnet ef 命令后加 --environment 参数指定对应环境即可,命令会自动读取对应配置文件的连接字符串执行操作,示例:
    # 执行演示站点的数据库迁移
    dotnet ef database update --environment Demo
    # 执行正式站点的数据库迁移
    dotnet ef database update --environment Production
    

这套逻辑是 .NET 自带的默认配置加载逻辑,不需要你修改 Program.cs 里的任何配置初始化代码,优先级和你熟悉的 Development 环境完全一致:优先加载 appsettings.json,随后加载 appsettings.{当前环境}.json 覆盖同名配置,完全满足你分文件管理不同站点配置的需求。

内容的提问来源于stack exchange,提问作者Jonathan Wood

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:45:00