Exchange Online 推送通知订阅无法永久保存

Exchange Online push notification subscription unable to perpetuate

我从一位同事那里继承了一个系统模块,该模块与 Office 365 中的 Exchange Online 集成。本质上,该模块的作用是通过 EWS Managed API; subscribe for push notifications 在用户日历发生变化时与远程 Exchange 服务进行交互.

更改事件确实会发布到我们的网络服务中,这很好。根据我们定义的 frequency 参数,状态检查消息也会按预期时间间隔发布,as per description about the subscription keep-alive behaviour.

问题是,根据观察,尽管用 SubscriptionStatusType.OK 响应以保持订阅,但订阅并没有永久存在。我们从不发送 SubscriptionStatusType.Unsubscribe 因为在消息通知中没有发现错误情况。似乎只持续 9 到 14 小时,Exchange 服务就停止发送任何状态检查或更改通知消息。当我们从两个独立的网络服务器(不同的通知回调 URL)进行订阅时,他们的订阅似乎同时消失。

尚未找到任何会导致 Exchange 服务 cancel/expire 我们的订阅的线索。还有哪些其他条件可能会导致过早退订?

Exchange 将 "lose" 相当定期地进行订阅,尤其是在 O365 环境中,因为邮箱不断地被转移到不同的服务器上以平衡整个生态系统的负载。即使在本地 Exchange 中,如果 CAS 重新启动,您也可能会失去订阅。不幸的是,要构建可靠的应用程序,您必须定期检查是否通过某种通知或心跳从 Exchange 收到消息。