Инструментирование запросов клиентов для EWS и REST в Exchange

Узнайте о загонах HTTP в запросах и ответах EWS и REST, которые помогут вам отслеживать и устранять Exchange приложение.

С вами такое случалось? Пользователь приложения сообщает о неожиданной ошибке. Вы хотите исследовать, но вы не можете воспроизвести его. Ошибка исчезла для пользователя, и у вас осталось очень мало действий данных. Разочарование, не так ли? Давайте рассмотрим, как можно активно подготовиться к этому сценарию и, надеюсь, избежать разочарований в будущем.

Добавление инструментов в запросы

Мы рекомендуем добавить дополнительные http-заготки в запросы для облегчения устранения неполадок. Вы должны хранить запись этой информации где-то (например, в файле журнала), чтобы вы могли получить ее позже, если это необходимо. Это полезно при анализе сетевого трафика, а также полезно, если вы обратитесь за помощью в службу поддержки Майкрософт.

Таблица 1. Запрос заглавных заглавок для устранения неполадок

Http header (EWS) Эквивалент управляемого API EWS Примечания.
User-Agent
ExchangeService.UserAgent
Установите это уникальное значение, которое идентифицирует клиентскую заявку.

Использование одинакового значения для всех запросов, которые отправляет приложение, позволяет Корпорации Майкрософт в случае их возникновения помочь устранить сбои вызовов.
client-request-id
ExchangeService.ClientRequestId
Установите для каждого запроса, который отправляет приложение, другое уникальное значение.

Рекомендуется использовать GUID. Этот уникальный идентификатор предназначен для сопоставления действий между двумя системами в случае, если что-то пойдет не так.
return-client-request-id
ExchangeService.ReturnClientRequestId
Установите значение true, чтобы сигнализировать Exchange серверу о том, что в соответствующем ответе оно должно возвращать значение вашего клиента-запроса.

Это можно использовать для сопоставления запросов и ответов в сетевых трассировок или трассировок управляемого API EWS.
X-ClientStatistics
ExchangeService.SendClientLatencies
Используется для сообщения о задержках EWS в Корпорации Майкрософт, если приложение Exchange Online или Exchange Online в Office 365.

Сведения о журнале из ответов

Так же, как клиент может добавить дополнительную аппаратуру к отправляемым запросам, Exchange добавляет дополнительные инструменты в ответы в виде http headers. Клиент должен зафиксировать эти сведения, чтобы получить сведения об инструментах запроса.

Примечание

Если вы используете управляемый API EWS, нет прямого эквивалента для http-заглав. Однако все заголовок ответов HTTP можно получить через свойство ExchangeService.HttpResponseHeaders.

Таблица 2. Http response headers

Http header Описание
request-id
Созданный сервером ID для запроса, соответствующего этому ответу.
client-request-id
Значение заглавного руководителя клиента-запроса в запросе.

Этот заглавный заготок присутствует только в том случае, если запрос содержит заглавную ссылку return-client-request-id со значением true.
X-FEServer
FQDN сервера клиентского доступа, обрабатываемого запросом.
X-TargetBEServer
FQDN сервера почтовых ящиков, обрабатываемого запросом.
X-DiagInfo
Дополнительные диагностические сведения в зависимости от запроса.
x-ms-diagnostics
Этот заголовок применим только в том случае, если в запросе используется проверка подлинности OAuth.

Он содержит явный код ошибки, который указывает причины сбой проверки подлинности OAuth.

Требуется следующий формат: errorId;reason="reason"error_type="error type"

Поле причины — это понятное человеку описание ошибки.

Поле errorId — это рядное, _ а поле типа ошибки представляет строковую репрезентативность этого integer следующим образом:
  • 2000000: недействительный _ подписи
  • 2000001: недействительный _ маркер
  • 2000002: срок _ действия маркера истек
  • 2000003: недействительный _ ресурс
  • 2000004: недействительный _ клиент
  • 2000005: недействительный _ пользователь
  • 2000006: недействительный _ клиент
  • 2000007: внутренняя _ ошибка
  • 2000008: недействительный _ грант

Отчет о задержке EWS в Корпорации Майкрософт

Если ваше приложение использует управляемый API EWS или EWS для подключения к Exchange Online, вы можете сообщить о задержке в запросах EWS непосредственно в Корпорацию Майкрософт. Информация передается через заглавную заглавную запроса X-ClientStatistics. Если вы используете управляемый API EWS, все, что вам нужно сделать, это установить свойство ExchangeService.SendClientLatencies к true. Если вы используете EWS, необходимо измерить время между выдачей запроса и получением ответа, а затем добавить заглавную головку X-ClientStatistics в следующий запрос EWS, который отправляет ваше приложение, используя следующий формат.

X-ClientStatistics: MessageId=<value of request-id header>,ResponseTime=<time in milliseconds>,SoapAction=<EWS operation>

Мы поддерживаем отчеты об этих задержках и используем их для непрерывного улучшения служб EWS в Exchange Online.

Дальнейшие действия

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

См. также