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

.NET6中通过KeyVault配置注册BlobServiceClient的方法

.NET 6中从KeyVault读取配置注册BlobServiceClient的方案

方法一:直接通过SecretClient读取KeyVault中的配置注册

已经注册了SecretClient,可以在注册BlobServiceClient时,通过依赖注入解析SecretClient,读取对应密钥后初始化BlobServiceClient:

builder.Services.AddAzureClients(clientBuilder =>
{
    // 注册SecretClient
    clientBuilder.AddSecretClient(builder.Configuration.GetSection("akeyvaulturl"));

    // 从KeyVault获取存储配置并注册BlobServiceClient
    clientBuilder.AddBlobServiceClient(serviceProvider =>
    {
        // 获取已注册的SecretClient实例
        var secretClient = serviceProvider.GetRequiredService<SecretClient>();
        
        // 同步获取KeyVault中的存储账户连接字符串(替换为你的密钥名称)
        var connectionStringSecret = secretClient.GetSecretAsync("StorageAccountConnectionString").GetAwaiter().GetResult();
        
        // 用连接字符串初始化BlobServiceClient
        return new BlobServiceClient(connectionStringSecret.Value.Value);
    }).WithName("myblobserviceclient");
});

如果你的KeyVault中存储的是存储账户URI而非完整连接字符串,可改用Azure AD凭据(如托管标识)认证:

clientBuilder.AddBlobServiceClient(serviceProvider =>
{
    var secretClient = serviceProvider.GetRequiredService<SecretClient>();
    var storageUriSecret = secretClient.GetSecretAsync("StorageAccountUri").GetAwaiter().GetResult();
    
    // 使用托管标识或其他Azure AD凭据认证
    return new BlobServiceClient(new Uri(storageUriSecret.Value.Value), new DefaultAzureCredential());
}).WithName("myblobserviceclient");

方法二:将KeyVault集成到配置系统(更符合.NET配置惯例)

先把Azure KeyVault添加为配置源,这样IConfiguration会自动包含KeyVault中的所有密钥,之后就可以像读取本地配置一样注册BlobServiceClient:

  1. 安装NuGet包:Microsoft.Extensions.Configuration.AzureKeyVault
  2. 修改Program.cs代码:
// 将KeyVault添加到配置源
builder.Configuration.AddAzureKeyVault(
    new Uri(builder.Configuration["akeyvaulturl"]),
    new DefaultAzureCredential());

// 注册Azure客户端
builder.Services.AddAzureClients(clientBuilder =>
{
    clientBuilder.AddSecretClient(builder.Configuration.GetSection("akeyvaulturl"));
    
    // 直接从Configuration读取KeyVault中的配置(密钥名称对应配置键)
    clientBuilder.AddBlobServiceClient(builder.Configuration["StorageAccountConnectionString"])
        .WithName("myblobserviceclient");
});

注意事项

  • 确保应用程序拥有KeyVault的访问权限(如托管标识需配置Secret Get权限)
  • 同步调用GetAwaiter().GetResult()在启动时可能短暂阻塞,若需异步处理,可考虑使用异步配置加载方式,但服务注册阶段通常接受同步调用
  • 方法二更适合多配置项从KeyVault读取的场景,统一配置源管理更简洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:45:37