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

相關問題