c# - 使用 Exchange Web 服务更新重复主节点时删除所有出现的异常
问题描述
当我在 Outlook 中更改重复主约会的模式时,所有修改或删除的事件都会被重置。
我尝试使用 Microsoft.Exchange.WebServices.dll 中的 EWS 从 .NET 实现相同的行为。不幸的是,我没有找到从现有约会中删除例外的任何选项。调用后,item.Update
所有异常都保留在 Exchange 中,除非它们完全超出新的重复模式的范围。
- 集合
ModifiedOccurrences
和DeletedOccurrences
是只读的,不提供清除它们的方法。 - 属性的更改
Recurrence
似乎不会自动导致此行为。 - 我没有找到像“RemovePatternExceptions”或类似的任何项目操作方法。
- 我知道不可能将单个出现恢复为默认值(在 EWS 中删除 Exchange 出现修改/删除)
如何使用 EWS恢复所有事件?
解决方案
简短的回答
经过大量检查后发现,
没有直接的方法可以通过 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
否则,可能会丢失所需的邀请,例如新的或已删除的与会者。
推荐阅读
- python - Python中超过2个概率分布的卷积
- python - 如何输出仅包含指定颜色范围的图像?
- c# - 会话成功后获得条纹处理费
- reactjs - 如何更改 iframe 内的更改颜色 - React
- elasticsearch - 如何在 Kibana 数据表中隐藏存储桶列
- json - React,AWS GraphQL 错误处理 - JSON 响应
- matlab - 我得到以下数控系统:
- postgresql - Flask SQLAlchemy Heroku 错误:重复键值违反唯一约束
- html - Scroll Snap Over 滚动
- powershell - 带有 powershell 的 Azure 函数应用无法启动容器实例