4

我正在使用EWS的托管API将调度应用程序与Exchange日历同步。我所有的正常会议都很好,但我没有得到任何重复/重复的约会。为什么EWS托管API SyncFolderItems不会返回定期约会

我的代码如下:

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

什么我需要改变看定期约会呢?

回答

3

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

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

+0

其实我正在使用FindItem从房间日历中检索具有开始和结束日期限制的约会,但仍未收到周期性会议。 – 2017-10-30 10:13:48

+0

我刚刚意识到我没有收到重复会议的原因,即使我正在使用FindItem,我是在使用搜索过滤器(我想使用两个项目视图进行分页并指定日期间隔)。如果您想要接收重复项目,则无法使用搜索过滤器(至少不能使用搜索过滤器)。 – 2018-01-04 06:47:13

0

SyncFolderItems会给你经常性的主项目,但不会扩展它们的出现次数。重复发生的主持有所有项目的共同属性,重复出现的模式以及异常和删除列表。这是将它们扩展到事件所需的所有信息。虽然您应该根据事件索引调用Appointment.BindToOccurrence来绑定来自循环主站的单个事件的属性。缺点是每次发生EWS呼叫。

1

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

但是,即使假设您自己可以扩大重复次数,SyncFolderItems本身并不提供而不是提供了所有必要的信息。

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

每个OccurrenceInfo对象在ModifiedOccurrences收集 包含四个属性:结束项目IdOriginalStart,并开始。要 访问异常项目上的其他属性,必须使用OccurrenceInfo.ItemId将该项目绑定到 。

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

换句话说,你从SyncFolderItem获取数据可以展开复发,其中包括时间异常和删除事件,而是你必须解决其他领域的例外(即总之,身体位置。等)与另外的.Bind()电话。

+0

Marco,你知道如何找出哪些ModifiedOccurrences刚被修改? (在执行SyncFolderItems并加载ModifiedOccurrences属性后,它包含每次修改的事件,而不仅仅是自上次同步以来修改的那个事件)。谢谢! – Ted 2018-01-11 15:12:49

相关问题