C# 如何处理定期系列的EWS删除(移动)事件?

C# 如何处理定期系列的EWS删除(移动)事件?,c#,exchangewebservices,C#,Exchangewebservices,我正在使用C#中的托管EWS API实现电子邮件/日历客户端。要处理更新,我使用拉通知。我试图找出如何正确地处理一个重复序列的“删除”事件。该事件在技术上是一个移动事件,因为它显示为将序列移动到垃圾箱文件夹 在处理周期性系列时,您得到的事件总是针对周期性主机。我已经成功地实现了“添加”案例,通过使用主ID和定期信息同步我感兴趣的所有单独事件,但还无法确定删除/删除案例 到目前为止,我调查了两种主要方法: 1) 尝试重用更改密钥。在重复序列中,所有实例的更改键都是相同的。因此,我尝试在缓存中查找具

我正在使用C#中的托管EWS API实现电子邮件/日历客户端。要处理更新,我使用拉通知。我试图找出如何正确地处理一个重复序列的“删除”事件。该事件在技术上是一个移动事件,因为它显示为将序列移动到垃圾箱文件夹

在处理周期性系列时,您得到的事件总是针对周期性主机。我已经成功地实现了“添加”案例,通过使用主ID和定期信息同步我感兴趣的所有单独事件,但还无法确定删除/删除案例

到目前为止,我调查了两种主要方法:

1) 尝试重用更改密钥。在重复序列中,所有实例的更改键都是相同的。因此,我尝试在缓存中查找具有匹配更改密钥的约会。但是,在这种情况下,更改密钥不匹配,因为当您获得事件时,序列已移动到垃圾箱文件夹,因此有一个新的更改密钥

2) 使用移动/删除事件中的定期主机绑定到将在我的缓存中的约会,然后根据这些事件的唯一ID尝试删除。这与#1的原因不同。当我得到事件时,序列已经被移动了,所有事件都有了新的ID。因此,查找中的新ID与我拥有的旧ID都不匹配

为了完整起见,我在事件中使用了OldItemId,但正如预期的那样,我无法对该ID执行任何绑定,因为该项在服务器上不再存在

因此,简而言之,我没有找到任何方法将重复序列的“移动到垃圾桶”事件链接到实际的原始重复序列。这是不可能的还是我遗漏了什么


现在,我将测试约会的定期主ID的一些主动缓存。也就是说,对于我同步的每个约会,我将测试它是否是一个系列的一部分,并加载该系列的定期主机的ID。然后,当我得到一个删除/移动事件时,我应该能够将事件中的OldItemId链接到缓存的定期主状态,然后删除所有关联的事件。

因此,我正在研究的最后一个解决方案就是我使用的解决方案。现在,当我同步约会时,我会检查它们是否是一个系列的一部分,并查找它们的定期主机并缓存该状态。然后,当我看到删除/移动事件时,我可以查找我的主约会ID映射,以判断该操作是否用于一个系列


我希望避免进行所有这些额外的状态跟踪,但无论如何我都找不到从删除事件到我已同步的单个事件的链接。

因此,我正在研究的最后一个解决方案就是我使用的。现在,当我同步约会时,我会检查它们是否是一个系列的一部分,并查找它们的定期主机并缓存该状态。然后,当我看到删除/移动事件时,我可以查找我的主约会ID映射,以判断该操作是否用于一个系列

我希望避免做所有这些额外的状态跟踪,但我无论如何也找不到从删除事件到我没有同步的单个事件的链接