Під час роботи з витягними підписками до папок календаря Office365 я отримував багато запитів ErrorReadEventsFailed
у SendNotification
запиті. Ця помилка по суті означає, що підписку більше не можна знайти, і сервер більше не повинен очікувати нових сповіщень.
Перевіривши рекомендовану корпорацією Майкрософт обробку помилок , рішення полягає у використанні функції Автовизначення для повторного відкриття ExternalEwsUrl або EwsPartnerUrl та створення нової передплати.
З Office365 служба AutoDiscovery здається майже неможливою з поєднанням облікових записів служби OAuth2, тому я використовую її https://outlook.office365.com/EWS/Exchange.asmx
як основну кінцеву точку EWS.
Однак, коли я намагаюся створити нову передплату для певної папки календаря, я продовжую отримувати загальний 500 ErrorNoRespondingCASInDestinationSite
помилку:
Наразі веб-служби Exchange не доступні для цього запиту, оскільки жоден із серверів клієнтського доступу на цільовому сайті не може обробити запит.
Дивна частина полягає в тому, що це відбувається лише безпосередньо після отримання початковогоErrorReadEventsFailed
помилки . Якщо я спробую ще раз, скажімо, через 30 секунд, запит пройде без проблем.
Після деяких досліджень, здавалося, більшості користувачів було корисно переконатися, що X-AnchorMailbox
заголовок був правильно встановлений для користувача, якого обліковий запис служби хоче видавати за себе. Я ще раз перевірив цей заголовок, і він справді надсилається разом із запитом на повторну підписку.
Цю проблему можна вирішити експоненціальним рішенням зворотного відключення або просто повторити X кількість разів, поки запит не пройде. Мені здається, що коли передплата "втрачається", службі O365 потрібен час, щоб змінити DNS сервера Exchange (це єдине, що я можу придумати).
Будь-яка допомога буде вдячна!