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

使用Microsoft.Identity.Web 1.60调用Microsoft Graph抛出NullReferenceException

你遇到的空引用异常来自Microsoft.Identity.Web.MergedOptions.PrepareAuthorityInstanceForMsal()方法,本质是身份配置参数没有被正确加载到合并配置对象中,属于Microsoft.Identity.Web版本升级后的配置兼容性问题,可按以下步骤排查修复:

  • 核对依赖版本兼容性
    不要混用不兼容的Microsoft.Identity.Web和Microsoft.Graph版本,.NET 5环境下建议使用 Microsoft.Identity.Web 1.25.10 + Microsoft.Graph 4.54.0,避免使用2.x版本的Microsoft.Identity.Web(2.x系列最低支持.NET 6)
  • 修正服务注册代码
    显式指定AzureAd配置节名称,避免配置上下文异常导致参数读取失败,修改后的代码如下:
    services.AddMicrosoftIdentityWebApiAuthentication(configuration, "AzureAd")
        .EnableTokenAcquisitionToCallDownstreamApi()
        .AddMicrosoftGraph(configuration.GetSection("MicrosoftGraph"))
        .AddInMemoryTokenCaches();
    
  • 修正MicrosoftGraph配置格式
    新版本AddMicrosoftGraph扩展要求Scopes为字符串数组格式,你当前使用的空格分隔单字符串会导致解析失败,修改appsettings.json对应节点:
    "MicrosoftGraph": {
        "BaseUrl": "https://graph.microsoft.com/v1.0",
        "Scopes": ["user.read", "user.read.all"]
    }
    
  • 适配权限调用类型
    如果你是使用应用权限(而非当前登录用户的委托权限)调用Graph,需要将AddMicrosoftGraph替换为AddMicrosoftGraphAppOnly:
    services.AddMicrosoftIdentityWebApiAuthentication(configuration, "AzureAd")
        .EnableTokenAcquisitionToCallDownstreamApi()
        .AddMicrosoftGraphAppOnly(configuration.GetSection("MicrosoftGraph"))
        .AddInMemoryTokenCaches();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:48:04