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

ASP.NET Core项目如何基于环境变量控制User Secrets启用状态

实现方案

核心思路

CreateDefaultBuilder默认会在Development环境自动加载User Secrets配置源,只需要在调用它之后执行两步调整即可:

  1. 移除所有已自动加载的User Secrets配置源
  2. 自行判断当前运行环境,仅当环境为自定义Local时重新添加User Secrets配置源

.NET 6+ 版本实现(WebApplication 构建模式)

直接在Program.cs中修改配置逻辑即可:

var builder = WebApplication.CreateBuilder(args);

// 移除默认添加的所有User Secrets配置源
builder.Configuration.Sources
    .Where(s => s is Microsoft.Extensions.Configuration.UserSecrets.UserSecretsConfigurationSource)
    .ToList()
    .ForEach(s => builder.Configuration.Sources.Remove(s));

// 仅Local环境启用User Secrets
if (builder.Environment.IsEnvironment("Local"))
{
    // 泛型参数填项目内任意类均可,用于定位用户机密对应的程序集
    builder.Configuration.AddUserSecrets<Program>();
}

// 后续保留你原有其他服务注册、中间件配置逻辑
var app = builder.Build();
// ... 原有逻辑不变

.NET 5及更早版本实现(泛型主机/Startup 模式)

在Program.cs的主机构建逻辑中添加ConfigureAppConfiguration配置段:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((context, config) =>
        {
            // 移除默认的User Secrets配置源
            var userSecretsSources = config.Sources
                .OfType<Microsoft.Extensions.Configuration.UserSecrets.UserSecretsConfigurationSource>()
                .ToList();
            foreach (var source in userSecretsSources)
            {
                config.Sources.Remove(source);
            }

            // 仅Local环境添加User Secrets
            if (context.HostingEnvironment.IsEnvironment("Local"))
            {
                config.AddUserSecrets<Startup>();
            }
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

注意事项

  • 常规ASP.NET Core项目模板默认已安装Microsoft.Extensions.Configuration.UserSecrets NuGet包,如遇缺失可自行安装
  • AddUserSecrets<T>的泛型参数仅用于定位程序集的用户机密ID,填写项目内任意自定义类均可
  • 调整完成后,Development环境将完全禁用User Secrets,Local环境将保留User Secrets高于环境配置文件的优先级

内容的提问来源于stack exchange,提问作者Carlos Jimenez Bermudez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:06:03