【问题标题】:SyncFolderItems returns deleted items which are not deleted in the user's calendarSyncFolderItems 返回用户日历中未删除的已删除项目
【发布时间】:2016-10-31 17:38:45
【问题描述】:

我正在使用 EWS 托管 API 在我们自己的日历程序和 Exchange 日历之间实现同步。一切似乎都很顺利,但是当我编写一个小程序来定期更新我们系统和 Exchange 中的约会以测试同步服务时,我注意到我们数据库中的约会数量正在稳步减少。事实证明,当我使用 SyncFolderItems 获取更新时,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 是我在要求交换更新之前从我们的数据库发送到交换的项目的 ID 列表。 AppointmentCreated/Deleted/Updated 函数更新我们的数据库以匹配来自交易所的信息。

这里发生了什么?为什么 Exchange 说约会被删除,而实际上不是?

【问题讨论】:

标签: c# calendar exchange-server exchangewebservices


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-06-01
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多