.NET Aspire 9.0中AddAzureKeyVaultSecrets无参调用可行性问询
.NET Aspire 9.0中AddAzureKeyVaultSecrets的配置疑问解答
首先明确:你没有理解错,AddAzureKeyVaultSecrets本身确实没有无参重载,文档的表述存在歧义,它想表达的并非“调用无参方法”,而是无需在代码中硬编码KeyVault URI,可通过配置文件自动读取参数。
核心原因与正确用法
Aspire的AddAzureKeyVaultSecrets扩展方法(来自Aspire.Azure.Security.KeyVault NuGet包)依赖配置绑定来简化参数传递,具体步骤如下:
- 安装依赖包
确保项目已安装对应版本的NuGet包:
dotnet add package Aspire.Azure.Security.KeyVault --version 9.0.*
- 配置appsettings.json
按文档要求在配置文件中添加节点:
{ "Aspire": { "Azure": { "Security": { "KeyVault": { "VaultUri": "https://你的密钥保管库名称.vault.azure.net/", "Credential": "DefaultAzureCredential" // 默认使用Azure默认凭据,可省略 } } } } }
- 正确调用扩展方法
文档所谓的“无参调用”实际是指无需手动传入URI参数,而是通过配置节绑定实现参数注入,正确的调用方式有两种:
- 直接传入配置节:
var keyVaultConfig = builder.Configuration.GetSection("Aspire:Azure:Security:KeyVault"); builder.AddAzureKeyVaultSecrets(keyVaultConfig);
- 通过委托绑定配置:
builder.AddAzureKeyVaultSecrets(settings => builder.Configuration.Bind("Aspire:Azure:Security:KeyVault", settings));
文档歧义说明
文档的表述模糊点在于把“无需硬编码URI参数”简化成了“无参调用”,但实际上AddAzureKeyVaultSecrets的所有重载都需要参数(配置节或设置委托),只是这些参数可以通过配置文件自动填充,不需要在代码里写死URI。
内容的提问来源于stack exchange,提问作者Boggin
相关产品推荐
相关产品推荐

