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

如何将环境变量映射到appsettings.json嵌套配置实现覆写

嵌套配置映射环境变量通用方案

你遇到的不生效问题是类Unix系统(WSL、Linux、Docker Linux容器等)的系统规则限制:环境变量名称不允许包含冒号:,所以你用Jwt:PublicKey作为变量名无法被系统正确识别读取。

ASP.NET Core 配置体系原生提供了跨平台的嵌套配置环境变量映射规则,不需要修改业务代码即可适配全环境:

  • Windows 环境下可以继续使用冒号:作为层级分隔符,例如Jwt:PublicKey
  • 类Unix 环境下统一使用**双下划线__**作为层级分隔符,这是官方指定的跨平台兼容方案,配置提供程序会自动将双下划线转换为逻辑层级分隔符和appsettings.json的嵌套结构做匹配

对应你的Jwt配置,只需要把环境变量名改为如下格式即可生效:

  • 公钥对应变量名:Jwt__PublicKey
  • 私钥对应变量名:Jwt__PrivateKey

常见场景使用示例

WSL下临时设置测试

export Jwt__PublicKey="你的实际公钥字符串"
export Jwt__PrivateKey="你的实际私钥字符串"
dotnet run

Docker启动时传入

docker run \
  -e Jwt__PublicKey="你的实际公钥字符串" \
  -e Jwt__PrivateKey="你的实际私钥字符串" \
  你的应用镜像名称

Docker Compose中配置

services:
  your-app:
    image: 你的应用镜像名称
    environment:
      - Jwt__PublicKey=你的实际公钥字符串
      - Jwt__PrivateKey=你的实际私钥字符串

扩展:数组类型配置的映射

如果配置包含数组结构,只需要在双下划线后加数组索引即可,比如如下配置:

{
  "Serilog": {
    "WriteTo": [
      {"Name": "Console"},
      {"Name": "File"}
    ]
  }
}

对应第一个WriteTo项的Name属性,环境变量名为Serilog__WriteTo__0__Name

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:24:04