4

我正在使用 EWS 的托管 API 将调度应用程序与交换日历同步。我可以参加所有正常的会议,但我没有得到任何重复/经常性的约会。

我的代码如下:

itemChangeCollection = _service.SyncFolderItems(
                            new FolderId(WellKnownFolderName.Calendar,
                                         new Mailbox(Email)),
                            propertySet,
                            null,
                            Settings.Default.ExchangeSyncFetchCount,
                            SyncFolderItemsScope.NormalItems,
                            syncState);

我还需要更改哪些内容才能查看定期约会?

4

3 回答 3

3

定期约会的实例不是商店中的“真实”物品。它们是虚拟的,因为只要您使用日历视图和时间范围执行搜索,它们就会被计算出来。

查找定期约会的唯一方法是使用 FindItems 方法。

于 2011-06-27T09:17:41.483 回答
2

SyncFolderItems只返回必要的信息来重建重复出现的系列,但不扩展个别事件。如果您需要扩展事件,则需要使用该FindItems方法。

但是,即使假设您可以自己扩展重复,也不能SyncFolderItems单独提供所有必要的信息。

SyncFolderItems将返回带有SingleRecurringMasterAppointmentType 的事件列表。RecurringMaster 事件包含ModifiedOccurrencesDeletedOccurrences属性。不幸的是,其中的项目ModifiedOccurrences只包含 ItemId,而不是 Item 本身。似乎有必要单独解决所有异常以获取修改事件的字段。从文档中:

ModifiedOccurrences集合中的每个 OccurrenceInfo 对象都包含四个属性:EndItemIdOriginalStartStart。要访问异常项目的其他属性,您必须使用OccurrenceInfo.ItemId绑定到该项目。

foreach (OccurrenceInfo item in recurringMasterItem.ModifiedOccurrences)
{
   Appointment modifiedItem = Appointment.Bind(service, item.ItemId);
   Console.WriteLine("Subject: " + modifiedItem.Subject);
}

换句话说,使用从您那里获得的数据可以扩展重复,包括时间异常和已删除的事件,但您必须通过额外的调用SyncFolderItem来解决其他字段(即摘要、正文、位置等)的异常。.Bind()

于 2016-11-24T13:17:14.707 回答
0

SyncFolderItems将为您提供经常性主项目,但不会将它们扩展为事件。循环主控拥有所有项目的通用属性、循环模式以及异常和删除列表。这是将它们扩展到事件所需的所有信息。尽管您应该调用Appointment.BindToOccurrence以根据出现索引从重复主控中绑定单个出现的属性。不利的一面是,这会为每次发生的事件进行 EWS 调用。

于 2016-09-30T10:24:27.533 回答