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