SyncFolderItems返回用户日历中未删除的已删除项

本文关键字:删除 返回 用户 日历 SyncFolderItems | 更新日期: 2023-09-27 17:53:07

我正在使用EWS管理的API实现我们自己的日历程序和Exchange日历之间的同步。一切似乎都很顺利,但当我编写一个小程序定期更新我们系统和Exchange中的约会,以测试同步服务时,我注意到我们数据库中的约会数量正在稳步减少。事实证明,当我使用SyncFolderItems获取更新时,Exchange有时会说,当约会没有被删除时,它会被删除。最后我把它从系统中删除了,但它还在用户的exchange日历中。我的第一个想法是,Exchange中的某些逻辑导致了约会被删除和重新创建,但如果是这种情况,我也应该收到创建约会的通知。我不是(除非我自己创建一个)。

我试着用谷歌搜索,但我找不到任何相关的。90%的结果是关于如何找到被删除的项目的问题。

这是我如何从Exchange获得更改:

                do
                {
                    ChangeCollection<ItemChange> icc = m_ECService.SyncFolderItems(
                        new FolderId(WellKnownFolderName.Calendar),
                        PropertySet.IdOnly,
                        m_IgnoredExchangeIDs,
                        512,
                        SyncFolderItemsScope.NormalItems,
                        m_syncStates[m_Employee.EmployeeID]);
                    m_syncStates[m_Employee.EmployeeID] = icc.SyncState;
                    foreach (ItemChange change in icc)
                    {                            
                        switch (change.ChangeType)
                        {
                            case ChangeType.Create:
                                AppointmentCreatedInExchange(change.ItemId.UniqueId);
                                break;
                            case ChangeType.Delete:
                                AppointmentDeletedInExchange(change.ItemId.UniqueId);
                                break;
                            case ChangeType.Update:
                                AppointmentUpdatedInExchange(change.ItemId.UniqueId);
                                break;
                            default:
                                break;
                        }
                    }
                    MoreChangesAvailable = icc.MoreChangesAvailable;
                } while (MoreChangesAvailable);

m_IgnoredExchangeIDs是我在请求exchange更新之前从数据库发送到exchange的项目的id列表。函数更新数据库以匹配来自exchange的信息。

这是怎么回事?为什么一个约会没有被删除,而Exchange却说已删除?

SyncFolderItems返回用户日历中未删除的已删除项

如果有人在将来某个时候发现这一点,我可以说我的问题是exchange提供的惟一id区分大小写。我将这些id存储在数据库中,并进行了不区分大小写的查询。我发现我经常有两个唯一的id,它们只有一个字母的大小写不同。