带有应用配置和托管标识的 Azure 函数 - 如何在本地调试

时间:2021-06-30 14:18:01

标签: c# azure azure-functions azure-managed-identity azure-app-configuration

我到处寻找标题中问题的答案,但我找到了 0 个关于我的问题的相关信息,是的,有其他服务的示例,但没有针对我的案例。

我有一个 Azure 应用程序功能。
我启用了托管身份。
我在应用程序配置访问管理 (IAM) 中为该功能添加了一个数据读取者角色。
在我的代码中添加

A host error has occurred during startup operation '<some GUID>'.
Azure.Identity: ManagedIdentityCredential authentication unavailable. No Managed Identity endpoint found.
Value cannot be null. (Parameter 'provider')

在我的 Startup.cs 中

当我在本地 DEBUG 中运行它时,出现此错误:

new ManagedIdentityCredential()

还尝试将 new DefaultAzureCredential() 更改为 A host error has occurred during startup operation '732e2be5-0729-4279-b15a-833c8313b39a'. Azure.Data.AppConfiguration: Service request failed. Status: 403 (Forbidden) Headers: Server: openresty/1.17.8.2 Date: Wed, 30 Jun 2021 14:15:22 GMT Connection: keep-alive x-ms-request-id: 2f2066ef-9222-42d5-b96b-85a9b338127e x-ms-client-request-id: 68cd19e1-0166-4567-a3f9-10f9a1cb6f3c x-ms-correlation-request-id: 2f2066ef-9222-42d5-b96b-85a9b338127e Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Expose-Headers: DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, Content-Type, Authorization, x-ms-client-request-id, x-ms-useragent, x-ms-content-sha256, x-ms-date, host, Accept, Accept-Datetime, Date, If-Match, If-None-Match, Sync-Token, x-ms-return-client-request-id, ETag, Last-Modified, Link, Memento-Datetime, retry-after-ms, x-ms-request-id, x-ms-client-session-id, x-ms-effective-locale, WWW-Authenticate Strict-Transport-Security: max-age=15724800; includeSubDomains Content-Length: 0 . Value cannot be null. (Parameter 'provider') 但后来我得到:

{{1}}

我的 Azure 帐户已添加到我的 Visual Studio,并在“工具”>“选项”>“Azure 服务身份验证”中被选中。

我快疯了 - 我必须做什么才能在本地调试?

1 个答案:

答案 0 :(得分:1)

ManagedIdentityCredential 仅适用于 Azure。 您可以将其更改为使用 DefaultAzureCredential。 它尝试多种方法,包括托管标识和 Visual Studio 身份验证。 所以它也可以在本地工作。 当然,您的用户帐户也需要具有所需的 RBAC 角色。