为什么Exchange Server会在MoveItems和Sync中返回不同的serverIds

时间:2014-09-17 12:28:47

标签: exchange-server activesync

我正在开发一部用于手机的电子邮件应用。 当我使用MoveItems命令删除消息(将消息移动到“已删除项目”文件夹)时,服务器为消息返回新的ServerId“3:3”。 但是,当我使用“同步”命令同步“已删除项目”时,服务器会为同一消息返回“3:1”的ServerId。 这会导致两条消息具有相同的内容,但“Deletd Items”文件夹中的ServerId不同。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在ActiveSync中,只要发生同步,服务器分配的项目ID就会发生变化。对此进行编码令人沮丧,但是Exchange分配的ID是短暂的并且经常会发生变化。

每当对需要同步的文件夹进行重大更改时,您必须通过清除该文件夹内容的当前缓存版本并将其替换为服务器发送给您的内容来防止ID更改。将新项目与旧项目相关联非常困难,因为ActiveSync不提供与每个项目AFAIK一起运行的持久性唯一标识符。 Exchange Web Services(EWS)在这方面更加灵活,您可以使用该API执行此操作。