【发布时间】: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 说约会被删除,而实际上不是?
【问题讨论】:
-
查看日历版本日志记录 blogs.technet.microsoft.com/exchange/2012/06/01/…,它应该告诉您想要在商店级别发生
标签: c# calendar exchange-server exchangewebservices