如何解决为什么EWS托管API SyncFolderItems不返回重复约会
|| 我正在使用EWS的托管API来将计划应用程序与交换日历同步。我的所有正常会议都可以,但没有任何重复/定期约会。 我的代码如下:itemChangeCollection = _service.SyncFolderItems(
new FolderId(WellKnownFolderName.Calendar,new Mailbox(Email)),propertySet,null,Settings.Default.ExchangeSyncFetchCount,SyncFolderItemsScope.NormalItems,syncState);
我还需要更改以查看定期约会吗?
解决方法
定期约会的实例不是商店中的“真实”物品。从某种意义上说,它们是虚拟的,只要您使用日历视图和时间范围执行搜索,就可以对它们进行计算。
查找定期约会的唯一方法是使用FindItems方法。
,
SyncFolderItems
仅返回必要信息以重建循环序列,而不会扩展单个事件。如果需要扩展出现次数,则需要使用FindItems
方法。
但是,即使假设您可以自己扩大复发率,仅SyncFolderItems
也不能提供所有必要的信息。
SyncFolderItems
将返回具有Single
或RecurringMaster
AppointmentType的事件的列表。一个RecurringMaster事件包含ModifiedOccurrences
和DeletedOccurrences
属性。不幸的是,“ 7”中的项目仅包含ItemId,而不包含项目本身。似乎有必要单独解决所有异常问题,以获取已修改事件的字段。从文档中:
ModifiedOccurrences集合中的每个OccurrenceInfo对象
包含四个属性:End,ItemId,OriginalStart和Start。至
访问例外项上的其他属性,您必须绑定到
通过使用OccurrenceInfo.ItemId的项目。
foreach (OccurrenceInfo item in recurringMasterItem.ModifiedOccurrences)
{
Appointment modifiedItem = Appointment.Bind(service,item.ItemId);
Console.WriteLine(\"Subject: \" + modifiedItem.Subject);
}
换句话说,使用您从SyncFolderItem
获得的数据,您可以扩展重复性,包括时间异常和已删除的事件,但是您必须通过额外的.Bind()
调用来解决其他字段(例如,摘要,正文,位置等)的异常。
,SyncFolderItems
将为您提供重复出现的主项目,但不会将它们扩展为出现的项目。循环主机保留所有项目的通用属性,循环模式以及例外和删除列表。这是将它们扩展为出现所需要的全部信息。尽管您应该调用“ 14”来根据事件索引为重复发生的主记录中的单个事件绑定属性。不利的一面是每次发生EWS呼叫。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。