通过托管标识从 c# Azure 函数检索配置值的 Azure 应用程序配置不起作用

Posted

技术标签:

【中文标题】通过托管标识从 c# Azure 函数检索配置值的 Azure 应用程序配置不起作用【英文标题】:Azure App Configuration to retrieve configuration values from c# Azure function via Managed Identity is not working 【发布时间】:2021-01-10 09:10:00 【问题描述】:

我创建了 Azure 应用配置并设置了键值对。我还通过 VS 2019 创建了一个 HTTP Azure 函数并编写了以下代码。

using Microsoft.Extensions.Configuration;
using Azure.Identity;

var config = new ConfigurationBuilder().AddAzureAppConfiguration(options =>

    options.Connect(new Uri("https://xxx-xxx-azf-global-parameters.azconfig.io"),
    new ManagedIdentityCredential());
).Build();
string str = config["AzfApp:Cloud"].ToString();
log.LogInformation("AzfApp:Cloud:" + config["AzfApp:Cloud"].ToString());

启用系统分配的 Azure 功能标识。我通过 ManagedIdentityCredential 使用的身份分配给 Azure 应用配置数据读取者和 Azure 应用配置数据所有者角色。但上面我的代码无法正常工作 Azure 门户。我已经通过日志信息捕获了错误。

错误消息:3 次尝试后重试失败。 (不知道这样的主机。)(不知道这样的主机。)(不知道这样的主机。)Source=Azure.CoreStackTrace:at Azure.Core.Pipeline.RetryPolicy。

请帮助解决这个问题。

【问题讨论】:

您的 URI 端点似乎不正确或托管身份没有App Configuration Data Reader 角色。 现在有更新吗?如果它对你有帮助,请接受它作为答案。 【参考方案1】:

我用你的代码在我的网站上进行了测试,效果很好。

转到 azure 应用配置并仔细检查您是否已将 Azure App Configuration Data Reader 分配给函数的标识。

输出截图如下:

【讨论】:

以上是关于通过托管标识从 c# Azure 函数检索配置值的 Azure 应用程序配置不起作用的主要内容,如果未能解决你的问题,请参考以下文章

C# - 具有托管服务标识的 Azure 存储 [关闭]

使用托管标识从 Azure Logic 应用向 Azure Function 进行身份验证

Python Azure 函数 - 使用 Key Vault 进行 MSI 身份验证

Azure API 管理 + Azure 函数和托管标识

带有 QueueTrigger 的 Azure 函数:是不是可以仅配置存储帐户 URL 并使用托管标识访问队列?

将 Azure 托管标识用于部署到 Azure 的应用程序?