Blazor调用MS Graph Me.GetAsync()后应用挂起问题求助
Microsoft Graph Me端点调用异常未捕获及包依赖问题解决
核心问题
调用Microsoft Graph的Me端点时,调试到await graphClient.Me.GetAsync()语句后,程序直接跳回调用方法,浏览器持续加载,Graph抛出的异常未被捕获。
已知前提
- Azure应用注册中已配置User.Read权限
- 传入的graphClient对象验证有效
- 通过Postman调用相同接口可正常获取响应
相关代码
获取Graph用户信息的方法:
public async Task<User> GetGraphMeAsync(GraphServiceClient graphClient) { try { var graphUser = await graphClient.Me.GetAsync().ConfigureAwait(false); if(graphUser != null) return graphUser; else { return new User(); } } catch (Exception ex) { throw new Exception(ex.Message); } }
组件初始化时调用该方法:
protected override async Task OnInitializedAsync() { var graphClient = GetGraphClient(); var meData = await GetGraphMeAsync(graphClient).ConfigureAwait(false); }
最初计划改用直接调用API替代SDK来规避问题。
问题排查与解决过程
包依赖错误出现
按建议修改代码后,在AddAuthentication()链式调用中使用.AddMicrosoftGraph()时触发错误:Reference to type 'IAuthenticationProvider' claims it is defined in 'Microsoft.Graph.Core', but it could not be found。相关资料多指向Microsoft.Graph从4.x升级到5.0的版本兼容问题,但当前使用的是5.58版本。移除包后问题未解决
参考.NET 8环境下的类似问题讨论,移除了Microsoft.Graph和Microsoft.Graph.Core包,但错误仍然存在。最终解决方式
新建同类型项目模板可正常运行,于是移除当前项目中所有Identity和Graph相关的包引用,再逐一重新安装对应版本的包,问题得以解决。
内容的提问来源于stack exchange,提问作者USMC6072
相关产品推荐
相关产品推荐

