如何处理循环系列的EWS删除(移动)事件
本文关键字:EWS 删除 移动 事件 循环 何处理 处理 系列 | 更新日期: 2023-09-27 18:16:26
我正在使用c#中的Managed EWS API来实现电子邮件/日历客户端。为了处理更新,我使用拉通知。我正在试图找出如何正确处理一个循环系列的"删除"事件。该事件在技术上是一个移动事件,因为它显示为将系列移动到垃圾文件夹。
在处理循环序列时,您得到的事件总是针对循环主序列的。通过使用主ID和重复信息来同步我感兴趣的所有单个事件,我已经成功地实现了"添加"情况,但还无法弄清楚删除/删除情况。
到目前为止,我研究了两种主要的方法:1)尝试重用更改键。在循环系列中,所有实例的更改键都是相同的。因此,我尝试在缓存中查找具有匹配更改键的约会。然而,在这种情况下,更改键不匹配,因为当您获得事件时,该系列已被移动到垃圾文件夹中,因此有一个新的更改键。
2)使用move/delete事件中的循环master绑定到我缓存中的约会,然后尝试基于这些事件的唯一id删除。这与第一条的原因是不一样的。当我得到事件时,这个系列已经被移动了,所有事件都有了新的id。因此,查找得到的新id与旧id都不匹配。
为了完整起见,我在事件中使用了OldItemId,但正如预期的那样,我不能对这个ID执行任何绑定,因为该项目不再存在于服务器上。
所以简而言之,我没有找到任何方法将循环系列的移动到垃圾箱事件链接到实际的原始循环系列。这是不可能的还是我错过了什么?
我现在要测试一些用于约会的循环主id的主动缓存。也就是说,对于我同步的每个约会,我将测试它是否是一个系列的一部分,并加载该系列的循环master的ID。然后,当我得到一个删除/移动事件时,我应该能够将OldItemId从事件链接到我缓存的循环主状态,然后删除所有相关的事件。
所以我正在研究的最后一个解决方案最终成为我使用的解决方案。现在,当我同步约会时,我会检查它们是否是一个系列的一部分,并查找它们的循环主节点并缓存该状态。然后,当我看到删除/移动事件时,我可以查找主约会id的映射,以判断该操作是否针对一个系列。
我希望避免做所有这些额外的状态跟踪,但我找不到无论如何使链接从一个删除事件到个别事件,我已经同步没有它。