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

.NET 6中使用IHostBuilder获取用户密钥内连接字符串返回null问题

.NET 6 用户机密连接字符串读取失败问题解决

问题场景

在.NET 6环境中,已通过以下命令设置用户机密连接字符串:

  • dotnet user-secrets init
  • dotnet user-secrets set ConnectionStrings:AppConfig "{myconnectionstring}"

但在ConfigureAppConfiguration回调中,通过hostingContext.Configuration.GetConnectionString("AppConfig")获取时返回空字符串,相关代码片段如下:

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    private static IHostBuilder CreateHostBuilder(string[] args) => 
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.ConfigureAppConfiguration((hostingContext, configurationBuilder) =>
                {
                    configurationBuilder.AddAzureAppConfiguration(options =>
                    {
                        var azureAppConfigConnectionString = hostingContext.Configuration.GetConnectionString("AppConfig");
                        // 此处变量为空
                    });
                });
            });
}

核心原因

hostingContext.Configuration是ConfigureAppConfiguration回调执行前的配置快照,此时用户机密可能尚未合并到当前配置实例中,回调内的配置修改也不会同步到该快照。

解决方法

1. 构建完整配置后读取

在回调内先构建当前配置的完整实例,再从中读取连接字符串:

webBuilder.ConfigureAppConfiguration((hostingContext, configurationBuilder) =>
{
    // 构建完整配置
    var fullConfig = configurationBuilder.Build();
    // 从完整配置中读取连接字符串
    var azureAppConfigConnectionString = fullConfig.GetConnectionString("AppConfig");

    configurationBuilder.AddAzureAppConfiguration(options =>
    {
        options.Connect(azureAppConfigConnectionString);
        // 其他Azure App配置逻辑
    });
});

2. 验证用户机密的关联范围

确保执行dotnet user-secrets命令时处于项目根目录(而非解决方案目录),用户机密与项目的UserSecretsId绑定,可检查项目.csproj文件中是否存在如下配置:

<PropertyGroup>
  <UserSecretsId>唯一标识字符串</UserSecretsId>
</PropertyGroup>

若不存在,重新执行dotnet user-secrets init生成。

3. 确认运行环境为Development

用户机密默认仅在Development环境下加载,可通过环境变量ASPNETCORE_ENVIRONMENT=Development指定运行环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 07:46:20