首页 > 解决方案 > Microsoft Graph API - Exchange Online Messages 调用返回 ServiceUnavailable

问题描述

我正在使用 Microsoft Graph API 从 Office365 中的 Exchange 获取消息。但是,对于某些文件夹,我似乎会遇到间歇性异常。

我们正在使用什么:

Microsoft.Graph 版本 3.9.0 - 适用于 .Net 的 Microsoft Graph 客户端库

Microsoft.Graph.Core 版本 1.21.0 - 适用于 .Net 的 Microsoft Graph 核心客户端库

这是正在使用的调用:

'GET /v1.0/users/{id}/mailFolders/{id}/messages'

这是错误(ServiceUnavailable 与 UnknownError 作为内部异常):

状态代码:ServiceUnavailable Microsoft.Graph.ServiceException:代码:UnknownError 消息:处理响应时出错。内部错误:AdditionalData:日期:2020-08-04T13:55:33 request-id:** ClientRequestId:**

代码:UnknownError 消息:处理响应时出错。内部错误:AdditionalData:日期:2020-08-04T13:55:33 request-id:** ClientRequestId:**

我试过的:

这些通常是我们在节流时会看到的错误。但是,在这种情况下,似乎没有应用节流的迹象。结果中没有返回任何“退避”时间。对不同文件夹的其他请求也可以正常返回。通过应用我们自己的“退避”时间(介于 5 分钟到 20 分钟之间似乎也没什么区别)。

上面发布的调用显示使用了 /v1.0。我们也切换到 /beta 端点,没有任何区别。

Graph 允许我们一次检索多达 999 封邮件。我们已将其一直减少到一次邮件或 2 封邮件,但它仍然返回相同的错误。

我们还尝试切换到使用 delta 令牌来检索邮件。这也返回相同的错误。

希望最近几个版本有一些不同,我们降级了 Graph。没有区别。

我在过去(很久以前)注意到,当对具有潜在本地同步问题的文件夹执行此调用时,这与返回的错误响应类型相同。在这种情况下,没有理由相信这些是本地同步问题。

在设置 httpProvider 时,我也删除了默认的重试处理程序。我已经看到使用默认的重试处理程序,它会自动捕获“ServiceException”并进行内部重试(不遵守回退(不是有任何)),并会导致 tooManyRetries 或超时(隐藏实际问题)。通过删除默认重试处理程序,我们可以看到服务器返回的实际“ServiceException”错误。

什么时候:

根据我们的遥测数据,自 6 月 11 日至 13 日左右以来,这种情况似乎开始更加频繁地发生。在此之前,我们没有遇到任何问题。这些请求有时会起作用,但它们很少而且介于两者之间。

这对我们来说是一个相当大的问题,所以任何建议将不胜感激。我可以记录此内容的任何特定 Microsoft 支持渠道也会有所帮助。

提前致谢。

标签: c#asp.netmicrosoft-graph-apioffice365microsoft-graph-mail

解决方案


推荐阅读