我正在使用带有流连接的Exchange Web服务API来获取对日历的更改。
如果我转到我的日历并删除一个事件,新的通知事件方法就会启动:
private void OnNewEvent(object sender, NotificationEventArgs args) {
var ids = from e in args.Events.OfType<ItemEvent>()
select e.ItemId;
//This results in an error code
var response = args.Subscription.Service.BindToItems(ids, new PropertySet(BasePropertySet.FirstClassProperties));
}
但是,我无法找到已删除的事件。我希望能够获取事件详细信息(例如姓名,预定时间等)。有什么方法可以在事件被删除时获取,或者是我可以检索id的唯一信息吗?
答案 0 :(得分:0)
写在这里Pull notifications for EWS deletion-related mailbox events in Exchange 对于Exchange 2010,该事件的类型为&#34; DeletedEvent&#34;。 由于项目被删除,因此操作Item.Bind(OldItemId)将失败。 您现在可以拥有的唯一信息是来自事件的OldFolderId和OldItemId。 除非您在某些数据库中拥有相应的信息(OutlookUniqueId =&gt; AllInfos),否则您将无法获得该信息。
答案 1 :(得分:0)
流式通知不会生成Delete事件。删除项目后,会将其移动到“已删除项目”文件夹中。
因此,您需要检查EventType.Moved
通知。
private void OnNewEvent(object sender, NotificationEventArgs args) {
foreach (var notification in args.Events.OfType<ItemEvent>())
{
if (notification.EventType == EventType.Moved)
var item = Item.Bind(service, notification.ItemId);
}
}