При работе с подписками по запросу на папки календаря Office365 я получал много ErrorReadEventsFailed
сообщений в SendNotification
запросе. По сути, эта ошибка означает, что подписка больше не может быть найдена, и сервер больше не должен ожидать новых уведомлений.
Проверяя рекомендованную Microsoft обработку ошибок , решение состоит в том, чтобы использовать автообнаружение для повторного обнаружения ExternalEwsUrl или EwsPartnerUrl и создания новой подписки.
В Office365 служба AutoDiscovery кажется практически невозможной с комбинацией учетных записей служб OAuth2, поэтому я использовал ее https://outlook.office365.com/EWS/Exchange.asmx
в качестве основной конечной точки EWS.
Однако, когда я пытаюсь создать новую подписку для определенной папки календаря, я продолжаю получать общую 500 ErrorNoRespondingCASInDestinationSite
ошибку:
Веб-службы Exchange в настоящее время недоступны для этого запроса, поскольку ни один из серверов клиентского доступа на конечном сайте не может обработать запрос.
Странно то, что это происходит только сразу после получения начальной ErrorReadEventsFailed
ошибки . Если я попробую еще раз, скажем, через 30 секунд, запрос будет выполнен без проблем.
После некоторого исследования выяснилось, что большинство пользователей сочли полезным убедиться, что X-AnchorMailbox
заголовок установлен правильно для пользователя, которого учетная запись службы желает выдать себя за другое лицо. Я дважды проверил этот заголовок, и он действительно отправляется вместе с запросом на повторную подписку.
Эта проблема может быть решена с помощью решения с экспоненциальной отсрочкой или просто повторением попыток X раз, пока запрос не будет выполнен. Мне кажется, что когда подписка «теряется», службе O365 нужно время, чтобы сменить DNS сервера Exchange (это единственное, что я могу придумать).
Любая помощь будет принята с благодарностью!
X-AnchorMailbox
заголовка и использования файла cookie серверной части Exchange во всех запросах. Кажется, исправляется сверхурочно (от 30 секунд до целого дня).Ответы:
Учитывая документацию по адресу: https://msdn.microsoft.com/en-us/library/office/dn458788(v=exchg.150).aspx
Если подписка потеряна или больше недоступна, лучше всего создать новую подписку и не включать старый водяной знак в новую подписку. Повторная подписка со старым водяным знаком вызывает линейное сканирование событий, что требует больших затрат.
Вместо этого создайте новую подписку и сравните свойства папки, чтобы найти изменения содержимого, которые произошли между потерянной подпиской и новой подпиской. Рекомендуем вам проверить расширенные свойства папки
PR_LOCAL_COMMIT_TIME_MAX (0x670a0040)
иPR_DELETED_COUNT_TOTAL (0x670b0003)
.Вы можете сделать это, создав расширенное определение свойства. Я думаю, это может вам помочь !!
источник