2017-05-25 50 views
0

我有一個同步工具,它使用EWS託管API'SyncFolderItems'檢索日曆文件夾中的更改項目。它已經運行了18個月左右,但本週兩個客戶都遇到了同樣的問題。 (可能是巧合)。這兩個都是Office 365客戶。EWS SyncFolderItems給我例外:「發生內部服務器錯誤,操作失敗。」

同步開始失敗,經仔細分析,SyncFolderItems調用失敗,出現錯誤「發生內部服務器錯誤,操作失敗。」沒有進一步的細節給出的錯誤。

我重置了同步(即將同步狀態設置爲空,以便再次同步文件夾中的所有內容)。它在一次獲得250個項目的幾個分頁迭代中運行良好,但它們在某個時候失敗了。

我想也許有一個項目有很多數據。我把頁面大小縮小到了25,它工作得很好,然後失敗了。我減少了它的頁面大小爲1,它失敗了。該文件夾中有1250個項目,所以我還沒有計算出它在哪個項目中失敗。這似乎不一致,我不知道最近是否有油門設置更高?

我想我的下一步是看看是否有一個違規項目並刪除它,但它的努力工作可能是哪個項目。

有沒有人有什麼建議可能會出錯?

icc = service.SyncFolderItems(Connection.SourceID, ps, null, 1,                
         SyncFolderItemsScope.NormalItems, syncstate); 

回答

2

我與SyncFolderItems(..)有同樣的問題。

該問題似乎只存在於公共文件夾中?我使用公共壓光機文件夾進行測試。如果我第一次調用SyncFolderItems時沒有任何狀態,那麼我沒有任何錯誤。但是,如果我具有狀態並刪除公用文件夾中的一個項目,則在下次調用SyncFolderItems()時會出現此錯誤。

 ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2016, TimeZoneInfo.Local); 
     service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx"); 
     service.Credentials = new WebCredentials("[email protected]", "pwd"); 

     Folder f1 = Folder.Bind(service, new FolderId("SOMEFOLDERID OF A PUBLIC CALENDAR FOLDER"), BasePropertySet.FirstClassProperties); 
     Console.WriteLine(f1.DisplayName); 
     String status = ""; 
     do 
     { 

      ChangeCollection<ItemChange> changes = service.SyncFolderItems(f1.Id, BasePropertySet.IdOnly, null, 100, SyncFolderItemsScope.NormalItems, status); 

      Console.Write(changes.Count+","); 

      status = changes.SyncState; 

     } while (true); 

ServerInfo:{} 15.01.1101.019 V2017_04_14

+0

也許添加一些工作的代碼,以幫助回答更詳細的問題。 –

+0

我現在用代碼改進了我的答案。 –

+0

是的 - 我可以重現這一點。將SyncFolderItems與公共日曆文件夾一起使用。將新項目添加到文件夾同步工作正常。如果我從文件夾中刪除約會並嘗試同步,則會收到錯誤「發生內部服務器錯誤。手術失敗了。' HResult:-2146233088; InnerException:空; – Davidt

相關問題