2011-06-30 45 views
2

我在交换托管API中使用pull订阅来捕获新创建,修改或删除的项目。 它适用于创建或修改的约会,但由于某种原因,它不适用于已删除的项目。这里是我如何创建订阅:Exchange托管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

这可能会起作用。但是,如何从其他移动到另一个文件夹的物品中提取移动到垃圾箱的物品? – Luke

回答

4

项目被移动到回收站。因此,您不会收到删除通知。

通过WellknownFolder Enumeration绑定Delected Items文件夹的FolderId。然后将该文件夹的UniqueId与移动事件的目标的唯一标识进行比较。

+0

谢谢你的接吻。你能给我一些示例代码吗? – 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); 
          } 

在预约的情况下,我得到了一个修改的事件,然后我想做某种代码,但FolderId不是DeletedItems但这个日历... 我会有兴趣看到您的代码作为我现在看到的唯一一个是try/catch:/

相关问题