在 Exchange 中使用 EWS 时处理通知相关的错误
了解如何在 Exchange 中使用 EWS 托管 API 或 EWS 开发的应用程序中处理与通知相关的错误。
如果应用程序订阅并收到通知,则可能必须处理与通知相关的错误。 您可以处理这些错误在运行时,或者开发 EWS 应用程序时。
表 1. 与通知相关的错误及其处理方式
Error | 尝试... | 处理它的... |
---|---|---|
ErrorExceededConnectionCount | 打开连接以在帐户达到其打开的流式处理连接的连接限制时获取事件。 |
|
ErrorExceededSubscriptionCount | 创建过多的订阅。 EwsMaxSubscriptions 限制策略参数确定帐户可以创建的最大订阅数。 | |
ErrorInvalidSubscriptionRequest | 从单个请求为多个邮箱或多个文件夹创建订阅。 | 在单个请求中为单个公用文件夹或单个邮箱创建订阅。 |
ErrorInvalidWatermark | 使用无效水印获取事件。 |
|
ErrorMissedNotificationEvents | 在错过某些以前的事件时获取事件。 | 比较扩展文件夹属性 PR_LOCAL_COMMIT_TIME_MAX (0x670a) 和 PR_DELETED_COUNT_TOTAL (0x670b) 以确定错过了哪些更改,并 创建新订阅。 |
ErrorProxyRequestNotAllowed | 订阅邮箱已移到另一个站点的批处理请求中的用户的事件。 | 使用 自动发现 重新发现 ExternalEwsUrl 或 EwsPartnerUrl,并创建新订阅。 |
ErrorReadEventsFailed | 从找不到的订阅获取事件。 | 使用 自动发现 重新发现 ExternalEwsUrl 或 EwsPartnerUrl,并创建新订阅。 |
ErrorServerBusy | 超出 限制 。 请注意有关限制的以下事项:
|
|
ErrorSubscriptionNotFound | 获取找不到的订阅的事件。 订阅可能已过期、EWS 进程可能已重启,或者传入了无效订阅。 |
|
ServiceLocalException | 在另一个文件夹上打开订阅连接时,将订阅添加到新文件夹。 | 将订阅更改为订阅邮箱中的所有文件夹,而不是特定文件夹。 |
ServiceResponseException | 获取无法在 Exchange 存储中查找的订阅的事件。 |
|
从丢失的订阅中恢复
当订阅丢失或不再可访问时,最好创建新订阅,并且不要在新订阅中包含旧水印。 使用旧水印重新订阅会导致对事件进行线性扫描,这代价高昂。 请改为创建新的订阅并比较文件夹属性,以查找丢失的订阅和新订阅之间发生的内容更改。 建议检查的扩展文件夹属性 PR_LOCAL_COMMIT_TIME_MAX (0x670a0040) 和 PR_DELETED_COUNT_TOTAL (0x670b0003) 。 可以通过 创建扩展属性定义来执行此操作。