使用对Office365日历文件夹的订阅时,我在ErrorReadEventsFailed
请求中收到了大量SendNotification
条消息。此错误实质上意味着无法再找到订阅,并且服务器不再需要新通知。
检查Microsoft's recommended error handling,解决方案是使用自动发现重新发现ExternalEwsUrl或EwsPartnerUrl,并创建新订阅。
使用Office365,通过OAuth2服务帐户的组合,AutoDiscovery服务似乎几乎不可能,因此我一直使用https://outlook.office365.com/EWS/Exchange.asmx
作为主要的EWS端点。
但是,当我尝试为特定日历文件夹创建新订阅时,我不断收到通用500 ErrorNoRespondingCASInDestinationSite
错误:
此请求当前无法使用Exchange Web服务,因为目标站点中的任何客户端访问服务器都无法处理该请求。
奇怪的部分是这只会在收到初始ErrorReadEventsFailed
错误后直接发生。如果我再试一次,比如30秒,请求就会没有问题。
在进行一些研究之后,似乎大多数用户发现确保为服务帐户希望模拟的用户正确设置X-AnchorMailbox
标头很有帮助。我仔细检查了这个标题,确实是按照重新订阅的请求发送的。
这个问题可以通过指数退避解决方案解决,或者只是重试X次,直到请求通过。在我看来,当订阅失败时,O365服务需要时间来更改Exchange服务器的DNS(这是我唯一能想到的)。
非常感谢任何帮助!
答案 0 :(得分:2)
鉴于以下文件:https://msdn.microsoft.com/en-us/library/office/dn458788(v=exchg.150).aspx
当订阅丢失或不再可访问时,最好创建新订阅,并且不在新订阅中包含旧水印。使用旧水印重新订阅会导致事件的线性扫描,这是非常昂贵的。
而是创建新的订阅并比较文件夹属性,以查找丢失的订阅和新订阅之间发生的内容更改。我们建议您检查的扩展文件夹属性为PR_LOCAL_COMMIT_TIME_MAX (0x670a0040)
和PR_DELETED_COUNT_TOTAL (0x670b0003)
。
您可以通过创建扩展属性定义来完成此操作。 我想这可能对你有帮助!!