Calendar 为什么EWS管理的API SyncFolderItems不返回定期约会
我正在使用EWS的托管API将计划应用程序与exchange日历同步。我可以参加所有正常的会议,但我没有得到任何重复/定期的约会 我的代码如下:Calendar 为什么EWS管理的API SyncFolderItems不返回定期约会,calendar,exchangewebservices,ews-managed-api,recurring-events,Calendar,Exchangewebservices,Ews Managed Api,Recurring Events,我正在使用EWS的托管API将计划应用程序与exchange日历同步。我可以参加所有正常的会议,但我没有得到任何重复/定期的约会 我的代码如下: itemChangeCollection = _service.SyncFolderItems( new FolderId(WellKnownFolderName.Calendar, new Mailbox(Emai
itemChangeCollection = _service.SyncFolderItems(
new FolderId(WellKnownFolderName.Calendar,
new Mailbox(Email)),
propertySet,
null,
Settings.Default.ExchangeSyncFetchCount,
SyncFolderItemsScope.NormalItems,
syncState);
我需要更改什么才能同时查看定期约会?定期约会的实例不是商店中的“真实”项目。它们是虚拟的,因为每当您使用日历视图和时间框架执行搜索时,都会计算它们
查找定期约会的唯一方法是使用FindItems方法。
SyncFolderItems
将为您提供定期主项目,但不会将其扩展为事件。定期主控形状保存所有项目的公共属性、定期模式以及异常和删除列表。这是将其展开为引用所需的所有信息。尽管您应该调用Appointment.BindToOccurrence
,以根据事件索引绑定定期主机中单个事件的属性。缺点是,这会为每次事件调用EWS。SyncFolderItems
仅返回重建重复序列所需的信息,但不会扩展单个事件。如果需要展开引用,则需要使用FindItems
方法
但是,即使假设您可以自己扩展重复周期,SyncFolderItems
本身也不能提供所有必要的信息
SyncFolderItems
将返回带有Single
或RecurringMaster
AppointmentType的事件列表。RecurringMaster事件包含ModifiedOccurrences
和DeletedOccurrences
属性。不幸的是,ModifiedOccurrences
中的项只包含ItemId,而不包含项本身。似乎有必要单独解决所有异常,以获得修改的引用的字段。从:
ModifiedOccurrences集合中的每个OccurrenceInfo对象
包含四个属性:结束、项目ID、原始开始和开始。到
访问异常项的其他属性,您必须绑定到
使用发生信息.ItemId创建项目
foreach(recurringMasterItem.ModifiedOccurrences中的发生信息项)
{
Appointment modifiedItem=Appointment.Bind(服务、项目、项目ID);
Console.WriteLine(“主题:+modifiedItem.Subject”);
}
换句话说,使用从
SyncFolderItem
获取的数据,您可以展开重复,包括时间异常和已删除的事件,但您必须使用其他.Bind()解决其他字段(即摘要、正文、位置等)上的异常
呼叫。实际上,我正在使用FindItem从具有开始和结束日期限制的房间日历中检索约会,但仍然没有接收定期会议。我刚刚意识到,即使使用FindItem,我也没有接收定期会议的原因是我使用了搜索过滤器(我想同时使用项目视图进行分页并指定日期间隔)。如果您想接收定期项目,则不能使用搜索筛选器(至少不能使用带有日期条件的筛选器)。Marco,您知道如何找到刚刚修改的ModifiedCurrences吗?(执行SyncFolderItems并加载ModifiedOccurrences属性后,它包含所有已修改的事件,而不仅仅是自上次同步以来已修改的事件)。谢谢!