首页 > 解决方案 > 使用 Exchange Web 服务更新重复主节点时删除所有出现的异常

问题描述

当我在 Outlook 中更改重复主约会的模式时,所有修改或删除的事件都会被重置。

我尝试使用 Microsoft.Exchange.WebServices.dll 中的 EWS 从 .NET 实现相同的行为。不幸的是,我没有找到从现有约会中删除例外的任何选项。调用后,item.Update所有异常都保留在 Exchange 中,除非它们完全超出新的重复模式的范围。

如何使用 EWS恢复所有事件?

标签: c#exchange-serverexchangewebservices

解决方案


简短的回答

经过大量检查后发现,
没有直接的方法可以通过 EWS 执行此操作,但存在一种解决方法。

细节

Exchange 服务器行为

EWS API 不提供恢复现有异常的接口。

Wenn 更新重复主服务器,EWS 服务器仅丢弃对新主服务器不再有效的异常,例如,由于结束日期更改而超出范围。确切的行为可能取决于 Exchance 版本(未经测试)。就我而言,它是 Exchange 2016。

Outlook Web 访问

Outlook Web 访问似乎暴露了 Exchange 服务器的本机行为。如果您对重复主数据进行更改,例如移动开始日期,则会弹出一条警告,指出这将重置所有发生异常。 这个警告是错误的。除非它们变得无效,否则异常会持续存在。

相比之下,Outlook 显示相同的警告,并真正将所有出现的事件恢复为默认值。

解决方法

Exchange 删除无效发生异常的功能可用于删除所有异常。
简单地暂时禁用重复。

即约会需要更新两次。在第一次调用中,仅清除 Recurrence 属性。第二次更新应用了预期的更改。

item.Recurrence = null;
item.Update(ConflictResolutionMode.AutoResolve, SendInvitationsOrCancellationsMode.SendToNone);
// set Recurrence to the new value here and optionally adjust other properties
item.Update(ConflictResolutionMode.AutoResolve, invitationsMode);

为避免向会议与会者重复更改邀请,第一步不会发送任何邀请。 在第一次调用之前不要进行进一步的更改,这一点很重要。Update 否则,可能会丢失所需的邀请,例如新的或已删除的与会者。


推荐阅读