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

.NET 7如何在appsettings.json中引用环境变量(类Java方式)

.NET 7 中实现类似Java的环境变量引用效果

方法一:利用.NET配置系统的优先级特性(最简便)

.NET的配置系统默认遵循环境变量 > appsettings.json的优先级规则,你完全不需要在appsettings.json中写${DATABASE_URL}这类占位符:

  • 直接在代码中通过Configuration["DatabaseUrl"]读取配置值即可。
  • 如果Azure KeyVault同步过来的环境变量里存在DatabaseUrl(或对应格式转换后的键名,比如环境变量会自动将驼峰转为下划线大写,如DATABASEURL或DATABASE_URL,.NET配置系统会自动映射),系统会直接使用环境变量的值,哪怕appsettings.json里没有这个配置项也能正常读取。

方法二:自定义占位符替换逻辑(若需保留appsettings结构)

如果确实需要在appsettings.json中保留占位符格式,可以在配置加载阶段添加自定义处理逻辑,替换字符串中的${VAR}为对应环境变量的值:

var builder = WebApplication.CreateBuilder(args);

// 加载默认配置源
var originalConfig = builder.Configuration;

// 处理占位符
var processedConfig = new Dictionary<string, string>();
foreach (var kvp in originalConfig.AsEnumerable())
{
    if (!string.IsNullOrEmpty(kvp.Value) && kvp.Value.Contains("${"))
    {
        var processedValue = Regex.Replace(kvp.Value, @"\${(\w+)}", match => 
            Environment.GetEnvironmentVariable(match.Groups[1].Value) ?? match.Value);
        processedConfig[kvp.Key] = processedValue;
    }
    else
    {
        processedConfig[kvp.Key] = kvp.Value;
    }
}

// 将处理后的配置加入配置系统
builder.Configuration.AddInMemoryCollection(processedConfig);

var app = builder.Build();

// 使用处理后的配置
var dbUrl = app.Configuration["DatabaseUrl"];

方法三:直接集成Azure KeyVault(更贴合你的场景)

无需通过环境变量中转,.NET可以直接将Azure KeyVault作为配置源,优先级高于appsettings:

  1. 安装NuGet包:Azure.Extensions.AspNetCore.Configuration.Secrets
  2. 在Program.cs中添加KeyVault配置源:
builder.Configuration.AddAzureKeyVault(
    new Uri("https://你的密钥保管库名称.vault.azure.net/"),
    new DefaultAzureCredential()
);

之后直接在代码中读取配置键名即可,系统会自动从KeyVault拉取对应值,无需额外处理环境变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 12:45:37