当我在函数中注入IConfiguration时,它找不到任何只存在于我的"Azure应用程序配置";。
我有一个函数App(V3(,它使用DefaultAzureCredential访问应用程序配置。我在本地调试中运行这个,因此需要一个默认凭据。我还有多个Tenant,所以我必须在DefaultAzureCredentialOptions上设置VisualStudioTenantId和SharedTokenCacheTenantId。我的Visual studio用户也被赋予了";应用程序配置数据读取器";以便能够调试。
当连接到应用程序配置时,我没有得到任何错误。编辑添加:我已设置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"];
这里有一个使用IFunctionsConfigurationBuilder的函数应用程序示例https://github.com/Azure/AppConfiguration/blob/main/examples/DotNetCore/AzureFunction/FunctionApp/Startup.cs。我建议你看一看,看看是否有遗漏的部分。
标题提到";在本地使用DefaultAzureCredential";。这是否意味着,如果您使用连接字符串,这将按预期工作?
请注意asyncvoid ConfigureAppConfiguration。这导致我的ConfigureAppConfiguration无法同步执行,导致configure在填充之前添加了我的应用程序配置。