当我在函数中注入 IConfiguration 时,它找不到任何只存在于我的“Azure 应用程序配置”中的键。
我有一个使用 DefaultAzureCredential 访问应用程序配置的 functionApp (V3)。我在调试中本地运行它,因此需要默认凭据。我也有多个租户,所以我必须在 DefaultAzureCredentialOptions 上设置 VisualStudioTenantId 和 SharedTokenCacheTenantId。我的 Visual Studio 用户还被赋予了“App Configuration Data Reader”角色,以便能够进行调试。
连接到应用程序配置时,我没有收到任何错误。已编辑添加:我已设置 AppConfiguration 以使用 AzureAD 进行身份验证。
请参见下面的代码:
public override async void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
{
var credOptions = new DefaultAzureCredentialOptions();
var tenantId = Environment.GetEnvironmentVariable("Tenant_Id");
credOptions.VisualStudioTenantId = tenantId;
credOptions.SharedTokenCacheTenantId = tenantId;
var cred = new DefaultAzureCredential(credOptions);
/*Works but requires SharedTokenCacheTenantId*/
var secretClient = new SecretClient(new Uri(vaultURI), cred);
var secret = await secretClient.GetSecretAsync("<secret name>");
/*Works but where are my keys when I try to access them?*/
builder.ConfigurationBuilder.AddAzureAppConfiguration(options =>
{
options.Connect(new Uri(appConfigURI), cred);
}).Build(); //Should I be building this??
}
在我的功能中
public FunctName(IConfiguration configuration)
{
_configuration = configuration;
}
当我访问该物业时
var prop = _configuration["PropertyName"];