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

.NET 6控制台应用在Visual Studio 2022中读取User Secrets失败求助

.NET 6.0 + VS2022 User Secrets读取返回Null的解决办法

问题重现

按文档步骤配置User Secrets后,使用Host.CreateDefaultBuilder构建的配置无法读取secrets.json中的值,返回null。已完成以下前置操作:

  • 安装Microsoft.Extensions.Configuration.UserSecrets和Microsoft.Extensions.Hosting包
  • 确认.csproj文件中已添加<UserSecretsId>节点

代码示例:

using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

using IHost host = Host.CreateDefaultBuilder(args).Build();
IConfiguration config = host.Services.GetRequiredService<IConfiguration>();

string secret = config.GetValue<string>("DUMMY_VALUE"); // 此处返回null

await host.RunAsync();

secrets.json内容:

{
   "DUMMY_VALUE": "dummy-test-value"
}

解决步骤

1. 确认当前环境为Development

User Secrets仅在Development环境下默认加载。Host.CreateDefaultBuilder会根据DOTNET_ENVIRONMENT或ASPNETCORE_ENVIRONMENT环境变量判断运行环境:

  • 验证环境:在代码中添加以下代码,输出当前环境名称
    var env = host.Services.GetRequiredService<IHostEnvironment>();
    Console.WriteLine($"当前环境: {env.EnvironmentName}");
    
  • 设置环境:在Visual Studio中右键项目→属性→调试→环境变量,添加DOTNET_ENVIRONMENT=Development

2. 核对UserSecretsId一致性

确保.csproj中的<UserSecretsId>与本地存储机密的文件夹ID完全匹配:

  • 打开.csproj文件,查看<UserSecretsId>的值,例如:<UserSecretsId>abc123-xxxx-xxxx-xxxx-abcdef123456</UserSecretsId>
  • 打开本地路径C:\Users\<你的用户名>\AppData\Roaming\Microsoft\UserSecrets,确认存在对应ID的文件夹,且其中的secrets.json是你编辑的内容

3. 显式添加User Secrets配置(可选)

如果默认配置未自动加载User Secrets,可手动在构建Host时显式添加:

using IHost host = Host.CreateDefaultBuilder(args)
    .ConfigureAppConfiguration((context, configBuilder) =>
    {
        if (context.HostingEnvironment.IsDevelopment())
        {
            // 泛型参数使用当前项目的入口类型(如Program)
            configBuilder.AddUserSecrets<Program>();
        }
    })
    .Build();

4. 排查配置覆盖问题

确认没有其他配置源(如appsettings.json、命令行参数、系统环境变量)定义了同名的DUMMY_VALUE。配置加载优先级中,User Secrets高于appsettings.json,但低于环境变量和命令行参数。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:15:33