我正在使用EWS的托管API来将调度应用程序与交换日历同步。我让所有正常会议都很好,但我没有得到任何重复/定期约会。
我的代码如下:
itemChangeCollection = _service.SyncFolderItems(
new FolderId(WellKnownFolderName.Calendar,
new Mailbox(Email)),
propertySet,
null,
Settings.Default.ExchangeSyncFetchCount,
SyncFolderItemsScope.NormalItems,
syncState);
我还需要更改哪些内容才能看到定期约会?
答案 0 :(得分:3)
定期约会的实例不是商店中的“真实”商品。它们是虚拟的,只要您使用日历视图和时间范围执行搜索,就会计算它们。
查找定期约会的唯一方法是使用FindItems方法。
答案 1 :(得分:1)
SyncFolderItems
仅返回重建重复系列的必要信息,但不会扩展单个事件。如果您需要扩展出现,则需要使用FindItems
方法。
但是,即使假设您可以自己扩展重复,SyncFolderItems
单独不提供所有必要信息。
SyncFolderItems
将返回包含Single
或RecurringMaster
AppointmentType的事件列表。 RecurringMaster事件包含ModifiedOccurrences
和DeletedOccurrences
属性。不幸的是,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调用。