Instrumentación de solicitudes de cliente para EWS y REST en Exchange

Obtenga información sobre los encabezados HTTP en las solicitudes y respuestas de EWS y REST que pueden ayudarle a supervisar y solucionar problemas de Exchange aplicación.

¿Alguna vez te ha pasado esto? Un usuario de la aplicación informa de un error inesperado. Desea investigar, pero no puede reproducirlo. El error ha desaparecido para el usuario y se le quedan muy pocos datos que se pueden actuar. Frustrante, ¿no? Veamos cómo puede prepararse proactivamente para este escenario y, con suerte, evitar la frustración en el futuro.

Agregar instrumentación a las solicitudes

Se recomienda agregar encabezados HTTP adicionales a las solicitudes para facilitar la solución de problemas. Debe mantener un registro de esta información en algún lugar (por ejemplo, en un archivo de registro) para poder recuperarla más adelante si es necesario. Esto es útil al examinar el tráfico de red y también es útil si se contacta con el soporte técnico de Microsoft para obtener ayuda.

Tabla 1. Encabezados de solicitud para solucionar problemas

Encabezado HTTP (EWS) Equivalente de API administrada ews Notas
User-Agent
ExchangeService.UserAgent
Esta opción se establece en un valor único que identifique la aplicación cliente.

Usar el mismo valor para todas las solicitudes que envía la aplicación permite a Microsoft ayudar a solucionar errores de llamadas, en caso de que surjan.
client-request-id
ExchangeService.ClientRequestId
Esta opción se establece en un valor único diferente para cada solicitud que envíe la aplicación.

Se recomienda usar un GUID. Este identificador único está pensado para usarse para correlacionar actividades entre dos sistemas en caso de que algo salga mal.
return-client-request-id
ExchangeService.ReturnClientRequestId
Esta opción se establece en true para indicar al servidor Exchange que debe devolver el valor de su client-request-id en la respuesta correspondiente.

Puede usar esto para correlacionar solicitudes y respuestas en seguimientos de red o seguimientos de API administrada ews.
X-ClientStatistics
ExchangeService.SendClientLatencies
Se usa para notificar las latencias de EWS a Microsoft si la aplicación tiene acceso a Exchange Online o Exchange Online como parte de Office 365.

Registrar información de respuestas

Al igual que el cliente puede agregar instrumentación adicional a las solicitudes que envía, Exchange instrumentación adicional a las respuestas en forma de encabezados HTTP. El cliente debe capturar esta información para ir junto con la información de instrumentación de solicitud.

Nota

Si usa la API administrada ews, no hay equivalente directo para los encabezados HTTP. Sin embargo, se puede obtener acceso a todos los encabezados de respuesta HTTP a través de la propiedad ExchangeService.HttpResponseHeaders.

Tabla 2. Encabezados de respuesta HTTP

Encabezado HTTP Descripción
request-id
Un identificador generado por el servidor para la solicitud que corresponde a esta respuesta.
client-request-id
Valor del encabezado client-request-id de la solicitud.

Este encabezado solo está presente si la solicitud contiene el encabezado return-client-request-id con un valor de true.
X-FEServer
FQDN del servidor de acceso de cliente que procesó la solicitud.
X-TargetBEServer
FQDN del servidor de buzones de correo que procesó la solicitud.
X-DiagInfo
Información de diagnóstico adicional, según la solicitud.
x-ms-diagnostics
Este encabezado solo es aplicable si se usa la autenticación de OAuth en la solicitud.

Contiene un código de error explícito que especifica por qué se produjo un error en la autenticación de OAuth.

Tiene el siguiente formato: errorId;reason="reason"error_type="error type"

El campo motivo es una descripción legible del error.

El campo errorId es un número entero y el campo de tipo de error _ es la representación de cadena de ese entero, como se muestra a continuación:
  • 2000000: firma _ no válida
  • 2000001: token _ no válido
  • 2000002: token _ expirado
  • 2000003: recurso _ no válido
  • 2000004: inquilino _ no válido
  • 2000005: usuario _ no válido
  • 2000006: cliente _ no válido
  • 2000007: error _ interno
  • 2000008: concesión _ no válida

Notificar latencia ews a Microsoft

Si la aplicación usa la API administrada ews o EWS para conectarse a Exchange Online, puede notificar la latencia de las solicitudes EWS directamente a Microsoft. La información se pasa a través del encabezado de solicitud X-ClientStatistics. Si usa la API administrada ews, todo lo que tiene que hacer es establecer la propiedad ExchangeService.SendClientLatencies en true. Si usa EWS, deberá medir el tiempo entre emitir una solicitud y recibir una respuesta y, a continuación, agregar el encabezado X-ClientStatistics a la siguiente solicitud EWS que envíe la aplicación, con el siguiente formato.

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

Mantenemos informes de estas latencias y las usamos para mejorar continuamente los servicios EWS en Exchange Online.

Pasos siguientes

Después de agregar instrumentación de cliente a la aplicación, está mejor preparado si algo sale mal. Si esto ocurre, puede usar los datos de instrumentación para solucionar problemas de la aplicación.

Ver también