You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Azure.Identity包后本地Azure Function运行异常问题咨询

解决方案

你不需要通过环境判断切换凭据类型,自定义DefaultAzureCredential的配置就能恢复类似旧包的工作方式,同时兼容本地Visual Studio和生产环境:

方法1:排除不需要的凭据类型

如果不想让DefaultAzureCredential尝试EnvironmentCredential(避免触发环境变量未配置的错误),可以用DefaultAzureCredentialBuilder排除它,后续会自动尝试其他适配凭据(Visual Studio凭据用于本地、托管标识用于生产):

if (!string.IsNullOrEmpty("vaultName"))
{
    var credential = new DefaultAzureCredentialBuilder()
        .ExcludeEnvironmentCredential()
        .Build();

    configurationBuilder.ConfigurationBuilder.AddAzureKeyVault(
        keyVaultUri,
        credential);
};

Configuration = configurationBuilder.ConfigurationBuilder.Build();

方法2:自定义凭据尝试顺序

也可以指定DefaultAzureCredential的凭据尝试优先级,让Visual Studio凭据优先执行,本地开发时会直接使用它,跳过环境变量检查:

if (!string.IsNullOrEmpty("vaultName"))
{
    var credential = new DefaultAzureCredentialBuilder()
        .AddVisualStudioCredential()
        .AddManagedIdentityCredential()
        .AddAzureCliCredential()
        .Build();

    configurationBuilder.ConfigurationBuilder.AddAzureKeyVault(
        keyVaultUri,
        credential);
};

Configuration = configurationBuilder.ConfigurationBuilder.Build();

旧包正常工作的原因

旧版AspNetCore.Configuration.Secret中的DefaultAzureCredential实现与新版Azure.Identity不同——旧版默认不包含EnvironmentCredential的尝试逻辑,而新版Azure.Identity的DefaultAzureCredential会优先尝试环境变量凭据,这才导致你看到环境变量未配置的错误提示。

通过上述自定义配置,既能保留DefaultAzureCredential自动适配多环境的能力,又能避免本地开发时的错误提示。

内容的提问来源于stack exchange,提问作者jerry xu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 05:33:26