我正在使用 C# 中的托管 EWS API 来实现电子邮件/日历客户端。为了处理更新,我正在使用拉取通知。我试图弄清楚如何正确处理重复系列的“删除”事件。该事件在技术上是一个移动事件,因为它显示为将系列移动到垃圾文件夹。
在处理重复出现的系列时,你得到的事件总是给重复出现的主人。我已经成功地实现了“添加”案例,方法是使用主 ID 和重复信息来同步我感兴趣的所有单个事件,但无法弄清楚删除/删除案例。
到目前为止,我已经研究了两种主要方法:
1)尝试重用更改键。在循环系列中,所有实例的更改键都是相同的。因此,我尝试在缓存中查找具有匹配更改键的约会。但是,在这种情况下更改键不匹配,因为当您收到事件时,系列已被移至垃圾文件夹,因此有一个新的更改键。
2) 使用移动/删除事件中的重复主节点绑定到我的缓存中的约会,然后尝试根据这些事件的唯一 ID 删除。这与 #1 的原因不同。到我收到事件时,该系列已经被移动,并且所有事件都有新的 ID。因此,查找中的新 ID 都不匹配我拥有的旧 ID。
为了完整起见,我在事件中使用了 OldItemId,但正如预期的那样,我无法对此 ID 执行任何绑定,因为该项目不再存在于服务器上。
所以简而言之,我没有找到任何方法将重复系列的“移至垃圾箱”事件与实际的原始重复系列联系起来。这是不可能的还是我错过了什么?
我现在要测试一些对约会的重复主 ID 的主动缓存。即,对于我同步的每个约会,我将测试它是否是系列的一部分并加载该系列的重复主人的 ID。然后,当我得到一个删除/移动事件时,我应该能够将事件中的 OldItemId 链接到我缓存的重复主状态,然后删除所有相关的事件。