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

如何通过单次调用获取Azure Key Vault中的所有密钥?

获取Azure Key Vault中所有密钥的方法

没问题!要一次性获取Azure Key Vault里的所有密钥并绑定到对应字段,你可以通过分页获取密钥列表,再批量拉取每个密钥的具体值来实现。下面是具体的实现方案:

核心思路

Azure Key Vault的客户端API会分页返回密钥列表,所以我们需要循环遍历所有分页结果,拿到每个密钥的标识(ID),再批量获取它们的实际值。之后你就可以把这些值存入一个字典,方便绑定到对应的字段。

完整代码示例

var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
var vaultUri = "https://KeyvaultName.vault.azure.net/";
var allSecrets = new Dictionary<string, string>();

// 分页获取所有密钥的基本信息
var secretsPage = await keyVaultClient.GetSecretsAsync(vaultUri).ConfigureAwait(false);
do
{
    foreach (var secretItem in secretsPage)
    {
        // 获取单个密钥的具体值
        var secret = await keyVaultClient.GetSecretAsync(secretItem.Id).ConfigureAwait(false);
        allSecrets.Add(secret.Name, secret.Value);
    }
    // 检查是否有下一页
    secretsPage = await secretsPage.GetNextPageAsync().ConfigureAwait(false);
} while (secretsPage != null);

// 绑定到对应字段的示例(假设字段名称和密钥名称一致)
ViewData["test1"] = allSecrets["test1"];
ViewData["test2"] = allSecrets["test2"];
// 也可以遍历字典批量绑定所有字段

优化建议

如果你的Key Vault里密钥数量较多,可以考虑使用并行异步调用来提高获取效率,比如用Task.WhenAll:

var secretTasks = secretsPage.Select(async item => 
{
    var secret = await keyVaultClient.GetSecretAsync(item.Id).ConfigureAwait(false);
    return new KeyValuePair<string, string>(secret.Name, secret.Value);
});

var secretResults = await Task.WhenAll(secretTasks).ConfigureAwait(false);
allSecrets = secretResults.ToDictionary(kv => kv.Key, kv => kv.Value);

这样就能一次性获取所有密钥,然后轻松绑定到你需要的字段啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:14:55