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

C#应用使用Azure.Maps.Routing遇CredentialUnavailableException认证问题

解决Azure.Maps.Routing的CredentialUnavailableException问题

排查步骤与修复方案

1. 确认Azure Maps资源的AD权限配置

  • 把你VS登录的Azure AD账户,在Azure Maps资源的「访问控制(IAM)」里添加Azure Maps Data Reader或更高权限的角色分配,确保账户有访问Maps资源的权限。
  • 检查你创建的AD应用注册:在「API权限」里添加Azure Maps的权限(比如Microsoft.Maps/Route.Read),如果是租户级应用,必须完成管理员同意,否则应用拿不到权限。

2. 修正本地开发的认证代码

用VS账户认证时,要注意代码里的Client ID是Azure Maps资源本身的Client ID,不是你自己创建的AD应用的Client ID,很多人在这里搞混:

var credential = new DefaultAzureCredential();
var routingClient = new MapsRoutingClient(credential, "<Azure Maps资源的Client ID>");

DefaultAzureCredential会自动优先使用VS登录的账户,不需要额外配置其他参数。

3. 主键认证的正确写法

如果用主键,直接用Azure Maps资源「密钥」页面的Primary Key,代码里不要传入任何Client ID:

var credential = new AzureKeyCredential("<Azure Maps主键>");
var routingClient = new MapsRoutingClient(credential);

4. 清理本地认证缓存

  • 关掉Visual Studio,删除%USERPROFILE%\.azure目录下的所有文件,重新打开VS并重新登录Azure账户,避免旧的认证缓存导致冲突。
  • 检查系统环境变量,看看有没有设置AZURE_CLIENT_ID、AZURE_TENANT_ID这类变量,它们会干扰DefaultAzureCredential的自动配置逻辑。

5. 快速验证权限

用Azure CLI测试你的账户是否能访问Maps资源:

az maps account show --name <你的Maps资源名称> --resource-group <资源组名称>

如果能正常返回资源信息,说明账户权限没问题,问题出在代码配置;如果报错,先把IAM权限配置好再试代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:45:47