我们有一个使用 MS Graph API 与客户的电子邮件/日历集成的应用程序。其中一位采用混合设置的客户(客户 A)报告了问题。所有用户突然发现电子邮件集成不起作用。我们使用生产应用程序凭证和不同环境(本地、开发云 AWS、登台云 GCP、生产云 GCP)和有效用户令牌对 MS Graph API 执行了几次测试调用(端点 /me/sendMail)。以下是结果和奇怪的行为:
- 好的。如果我们从所有环境中调用我们自己的测试帐户(Office365,非混合) - 一切都会正常。
- 好的。如果我们从所有环境中对客户 B 帐户(Office365,非混合)进行调用 - 一切正常。
- 好的。如果我们从本地、开发云 AWS 环境对客户 A 帐户(混合设置)进行调用 - 一切都正常。
- 超级奇怪。如果我们从暂存云 GCP、生产云 GCP 环境中对客户 A 帐户(混合、Exchange 2016 设置)进行调用 - 我们会收到 404 和以下错误。
{“error”:{“code”:“MailboxNotEnabledForRESTAPI”,“message”:“REST API is not yet supported for this mailbox.“}}
客户的 IT 部门声称他们的日志中没有与此问题相关的错误。他们按照 MS 的建议做了一切https://learn.microsoft.com/en-us/graph/hybrid-rest-support#requirements-for-the-rest-api-to-work-in-hybrid-deployments https://learn.microsoft.com/en-us/graph/hybrid-rest-support#requirements-for-the-rest-api-to-work-in-hybrid-deployments
Update:
经过更多检查后发现,当特定 MS 数据中心提供请求时,我们会收到 404:
以下是 404 的响应标头参数:
x-ms-ags-diagnostic {"ServerInfo":{"DataCenter":"英国南部","Slice":"SliceC","Ring":"3","ScaleUnit":"000","RoleInstance": “AGSFE_IN_11”}}
x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"美国中部","Slice":"SliceC","Ring":"2","ScaleUnit":"002","RoleInstance" :"AGSFE_IN_14"}}
我们得到了 201(成功):
x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"西欧","Slice":"SliceC","Ring":"5","ScaleUnit":"003","RoleInstance" :"AGSFE_IN_52"}}