2011-06-30 9 views
2

私は交換管理されたAPIでプルサブスクリプションを使用して、新しく作成、変更、または削除されたアイテムを捕捉します。 作成または変更された予定には問題ありませんが、何らかの理由で削除された項目では機能しません。ここで私はサブスクリプションを作成した方法です:Exchange Managed API:アイテムが削除されたときにイベントが発生しないのはなぜですか?

PullSubscription subscription = m_exchangeService.SubscribeToPullNotifications(
      new FolderId[] { WellKnownFolderName.Calendar }, 
      1440, 
      null, 
      EventType.Created, EventType.Modified, EventType.Deleted); 
      subscriptions.Add(usermail, subscription); 

私はそれを動作させるために何かを設定する必要がありますか?これは、削除されたフォルダに移動した予定ではなく、ハード削除された予定に対してのみ機能しますか?

+1

あなたはEventType.Movedを試しましたか?私が知っている限り、それはゴミ箱に行く。 – Silx

+0

これはうまくいく可能性があります。しかし、私は別のフォルダに移動する他のアイテムからゴミ箱に移動するアイテムをどのようにdinstiguishするのですか? – Luke

答えて

4

アイテムはごみ箱に移動されます。したがって、削除通知を受け取ることはありません。

WellittedFolder列挙によってバインドされたDelected ItemsフォルダのFolderIdを取得します。次に、そのフォルダの一意のIDと、移動イベントのターゲットの一意のIDを比較します。

+0

あなたのanwserに感謝します。いくつかのコード例を教えていただけますか? – Luke

+0

気にしないでください。私はそれを自分で考え出した。 – Luke

0

削除された連絡先を取得したとき、私はMovedイベントを取得しました。 は、その後、私は連絡先が削除されたときにチェックするためにこれをしなければならない。

switch (outlookEvent.EventType) 
{ 
    case EventType.Moved: 
     var folder = Folder.Bind(subscription.Value.EwsInstance, WellKnownFolderName.DeletedItems); 
          if (Equals(outlookEvent.ParentFolderId.UniqueId, folder.Id.UniqueId)) 
          { 
           Console.WriteLine("Moved to DeletedItems " + outlookEvent.ItemId); 
          } 

予定の場合は、私は、Modifiedイベントを得た後、私は、コードのいくつかの種類をやってみたかったが、フォルダIDではありませんDeletedItemsしかし、この1つのカレンダー... あなたのコードが私が今試してみる唯一のものとしてあなたのコードを見ることに興味があります:/

関連する問題