EWS API - ошибка при воссоздании подписок на уведомления

При работе с пулл-подписками на папки календаря Office365 я получаю много ErrorReadEventsFailed сообщений в SendNotification запрос. Эта ошибка означает, что подписка больше не может быть найдена, и сервер больше не должен ожидать новых уведомлений.

Проверка рекомендуемой Microsoft обработки ошибок , решение состоит в том, чтобы использовать автообнаружение для повторного обнаружения ExternalEwsUrl или EwsPartnerUrl и создания новой подписки.

В Office365 служба автообнаружения кажется почти невозможной с комбинацией учетных записей службы OAuth2, поэтому я использовал https://outlook.office365.com/EWS/Exchange.asmx в качестве основного Конечная точка EWS.

Однако, когда я пытаюсь создать новую подписку для определенной папки календаря, я получаю общую ошибку 500 ErrorNoRespondingCASInDestinationSite:

  

Веб-службы Exchange в настоящее время недоступны для этого запроса, поскольку ни один из серверов клиентского доступа на целевом сайте не может обработать запрос.

Странная часть - , это происходит только после получения начальной ErrorReadEventsFailed ошибка . Если я попытаюсь, скажем, через 30 секунд, запрос пройдет без проблем.

После некоторых исследований оказалось, что большинству пользователей было полезно убедиться, что заголовок X-AnchorMailbox был правильно установлен для пользователя, который сервисный аккаунт хочет выдать себя за другого. Я дважды проверил этот заголовок, и он действительно отправляется вместе с запросом на повторную подписку.

Эта проблема может быть решена с помощью экспоненциального отката или путем повторной попытки X раз, пока запрос не пройдет. Мне кажется, что когда подписка «теряется», службе O365 требуется время для изменения DNS сервера Exchange (это единственное, что я могу придумать).

Любая помощь будет принята с благодарностью!

79 голосов | спросил jstruzik 21 J000000Tuesday15 2015, 01:00:48

1 ответ


0

С документацией по адресу: https : //msdn.microsoft.com/en-us/library/office/dn458788 (v = exchg.150) .aspx

Если подписка потеряна или больше не доступна, лучше всего создать новую подписку и не включать старый водяной знак в новую подписку. Повторная подписка со старым водяным знаком вызывает линейное сканирование событий, что является дорогостоящим.

Вместо этого создайте новую подписку и сравните свойства папки, чтобы найти изменения содержимого, которые произошли между потерянной подпиской и новой подпиской. Рекомендуется проверить расширенные свойства папок: PR_LOCAL_COMMIT_TIME_MAX (0x670a0040) и PR_DELETED_COUNT_TOTAL (0x670b0003)

Вы можете сделать это, создав расширенное определение свойства. Я думаю, что это может помочь вам!

ответил Manoj S 12 72017vEurope/Moscow11bEurope/MoscowSun, 12 Nov 2017 21:24:14 +0300 2017, 21:24:14

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132