为什么EWS托管API SyncFolderItem不会返回定期约会

时间:2011-05-24 21:50:09

标签: calendar exchangewebservices ews-managed-api recurring-events

我正在使用EWS的托管API来将调度应用程序与交换日历同步。我让所有正常会议都很好,但我没有得到任何重复/定期约会。

我的代码如下:

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

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

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

SyncFolderItems将返回包含SingleRecurringMaster AppointmentType的事件列表。 RecurringMaster事件包含ModifiedOccurrencesDeletedOccurrences属性。不幸的是,ModifiedOccurrences中的项目只包含ItemId,而不包含Item本身。似乎有必要单独解决所有异常以获取修改的出现的字段。来自documentation

  

ModifiedOccurrences 集合中的每个OccurrenceInfo对象   包含四个属性:结束 ItemId OriginalStart 开始。至   访问异常项上的其他属性,必须绑定到   该项目使用 OccurrenceInfo.ItemId

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

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

答案 2 :(得分:0)

SyncFolderItems会为您提供定期的主项,但不会将它们展开。定期主数据包含所有项的公共属性,重复模式以及异常和删除列表。这是将它们扩展到出现所需的所有信息。虽然您应该根据事件索引调用Appointment.BindToOccurrence从定期主服务器绑定单个事件的属性。缺点是这会在每次出现时都进行EWS调用。