2016-06-29 8 views
0

EWS管理APIを使用して、独自のカレンダープログラムとExchangeカレンダーの間で同期を実装しています。すべてがうまくいくように見えましたが、定期的に私たちのシステムとExchangeで予定を更新する小さなプログラムを作ったときに、同期サービスをテストするために、データベースの予定数が着実に減少していたことに気付きました。 SyncFolderItemsを使用して更新プログラムを取得すると、Exchangeによっては、予定が削除されていると表示されることがあります。だから私は私たちのシステムでそれを削除終了しますが、それはまだユーザーの交換のカレンダーにあります。私の最初の考えは、Exchangeのいくつかの論理が予定を削除して再作成したということでしたが、そうであれば任命も作成されたという通知を受けていたはずです。私は(私が自分で作成しない限り)わけではありません。SyncFolderItemsは、ユーザーのカレンダーで削除されていない削除済みアイテムを返します。

私はグーグルを試みましたが、関連するものは見つかりませんでした。結果の90%は、削除されたアイテムの検索方法に関する質問です。

   do 
       { 
        ChangeCollection<ItemChange> icc = m_ECService.SyncFolderItems(
         new FolderId(WellKnownFolderName.Calendar), 
         PropertySet.IdOnly, 
         m_IgnoredExchangeIDs, 
         512, 
         SyncFolderItemsScope.NormalItems, 
         m_syncStates[m_Employee.EmployeeID]); 

        m_syncStates[m_Employee.EmployeeID] = icc.SyncState; 

        foreach (ItemChange change in icc) 
        {        
         switch (change.ChangeType) 
         { 
          case ChangeType.Create: 
           AppointmentCreatedInExchange(change.ItemId.UniqueId); 
           break; 
          case ChangeType.Delete: 
           AppointmentDeletedInExchange(change.ItemId.UniqueId); 
           break; 
          case ChangeType.Update: 
           AppointmentUpdatedInExchange(change.ItemId.UniqueId); 
           break; 
          default: 
           break; 
         } 
        } 

        MoreChangesAvailable = icc.MoreChangesAvailable; 

       } while (MoreChangesAvailable); 

m_IgnoredExchangeIDsは私が右の交換局からの更新を求める前に、当社のデータベースから交換するのに送られたアイテムのIDのリストです。

は、これは私がExchangeから変更を取得する方法です。 AppointmentCreated/Deleted/Updated関数は、Exchangeからの情報と一致するようにデータベースを更新します。

ここでは何が起こっていますか?なぜExchangeは予定が削除されていないと言っているのですか?

+0

カレンダーのバージョンロギングをご覧ください。https://blogs.technet.microsoft.com/exchange/2012/06/01/holy-cow-changes-to-recoverable-items-versioning-in-exchange-2010- sp2-ru3 /あなたが店舗レベルで起こっていることを伝えるべきです –

答えて

0

将来誰かがこのことを発見した場合、私の問題は交換機によって提供されるuniqueIDが大文字と小文字を区別しているということです。これらのIDをデータベースに保存し、大文字と小文字を区別しないクエリを実行しました。私はしばしば1つの文字の場合だけ異なる2つのユニークIDを持っていることがわかった。

関連する問題