2017-05-25 5 views
0

EWS Managed API 'SyncFolderItems'を使用してカレンダーフォルダの変更アイテムを取得する同期ツールがあります。これは18ヶ月間うまく動いていますが、今週は2人の顧客が同じ問題を経験しました。 (偶然かもしれない)。どちらもOffice 365のお客様です。EWS SyncFolderItemsが「内部サーバーエラーが発生しました。操作が失敗しました」という例外を表示しています。

同期が開始されず、より詳細な分析では、SyncFolderItems呼び出しが「内部サーバーエラーが発生しました。操作が失敗しました」というエラーで失敗していました。エラーの詳細は表示されません。

同期をリセットします(つまり、同期状態をnullに戻して、フォルダ内のすべてを再び同期させます)。一度に250項目を取得するいくつかのページネーション反復ではうまく機能しましたが、ある時点で失敗しました。

多分データが多いアイテムがあると思いました。私はページのサイズを25に減らし、ちょっとしたことでうまくいってから失敗しました。私はそれを1のページサイズに減らし、失敗します。フォルダには1250個のアイテムがあるので、まだ失敗しているアイテムはありません。それは矛盾しているようで、最近高く設定されているスロットルがあるのだろうか?

私の次のステップは、問題のアイテムが1つあり、それを削除するかどうかを確認することですが、そのアイテムがある可能性があります。

誰かが間違っている可能性のあることについての提案はありますか?

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

答えて

2

私はSyncFolderItems(..)と同じ問題があります。

問題はパブリックフォルダにのみ存在するようですか?私は公開カレンダーフォルダでテストしました。 SyncFolderItemsをステータスなしで初めて呼び出すと、エラーは発生しません。しかし、ステータスがあり、パブリックフォルダ内のアイテムを1つ削除すると、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:Null。 – Davidt

関連する問題