При работе с подписками по запросу на папки календаря 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 (это единственное, что я могу придумать).
Любая помощь будет принята с благодарностью!