Partager via


Instrumentation des demandes de client pour EWS et REST dans Exchange

Découvrez les en-têtes HTTP dans les requêtes et réponses EWS et REST qui peuvent vous aider à surveiller et résoudre les problèmes de votre application Exchange web.

Cela vous est-il déjà arrivé ? Un utilisateur de votre application signale une erreur inattendue. Vous souhaitez examiner, mais vous ne pouvez pas le reproduire. L’erreur a disparu pour l’utilisateur et vous ne disposez que de très peu de données actionnables. Frustrant, n’est-ce pas ? Examinons comment vous pouvez préparer ce scénario de manière proactive et, espérons-le, éviter toute frustration à l’avenir.

Ajouter de l’instrumentation aux demandes

Nous vous recommandons d’ajouter des en-têtes HTTP supplémentaires à vos demandes pour faciliter le dépannage. Vous devez conserver un enregistrement de ces informations quelque part (par exemple, dans un fichier journal) afin de pouvoir les récupérer ultérieurement si nécessaire. Cela est utile lors de l’examen du trafic réseau et est également utile si vous contactez le support Microsoft pour obtenir de l’aide.

Tableau 1. Demander des en-têtes pour la résolution des problèmes

En-tête HTTP (EWS) Équivalent d’API gérée EWS Remarques
User-Agent
ExchangeService.UserAgent
Définissez cette valeur sur une valeur unique qui identifie votre application cliente.

L’utilisation de la même valeur pour toutes les demandes que votre application envoie permet à Microsoft de résoudre les problèmes d’appel, s’ils surviennent.
client-request-id
ExchangeService.ClientRequestId
Définissez cette valeur sur une valeur unique différente pour chaque demande que votre application envoie.

Nous vous recommandons d’utiliser un GUID. Cet identificateur unique est destiné à être utilisé pour corréler les activités entre deux systèmes en cas de problème.
return-client-request-id
ExchangeService.ReturnClientRequestId
Définissez cette valeur sur true pour signaler au serveur Exchange qu’il doit renvoyer la valeur de votre client-request-id dans la réponse correspondante.

Vous pouvez l’utiliser pour corréler les demandes et les réponses dans les suivis réseau ou les suivis d’API gérées EWS.
X-ClientStatistics
ExchangeService.SendClientLatencies
Permet de signaler des latencies EWS à Microsoft si votre application accède à Exchange Online ou Exchange Online dans le cadre de Office 365.

Journal des informations à partir des réponses

Tout comme votre client peut ajouter une instrumentation supplémentaire aux demandes qu’il envoie, Exchange ajoute une instrumentation supplémentaire aux réponses sous la forme d’en-têtes HTTP. Votre client doit capturer ces informations pour aller de même que les informations d’instrumentation de la demande.

Notes

Si vous utilisez l’API gérée EWS, il n’existe pas d’équivalent direct pour les en-têtes HTTP. Toutefois, tous les en-têtes de réponse HTTP sont accessibles via la propriété ExchangeService.HttpResponseHeaders.

Tableau 2. En-têtes de réponse HTTP

En-tête HTTP Description
request-id
ID généré par le serveur pour la demande qui correspond à cette réponse.
client-request-id
Valeur de l’en-tête client-request-id dans la demande.

Cet en-tête est uniquement présent si la requête contient l’en-tête return-client-request-id avec la valeur true.
X-FEServer
Nom deqdn du serveur d’accès au client qui a traitée la demande.
X-TargetBEServer
Nom deqdn du serveur de boîtes aux lettres qui a traitée la demande.
X-DiagInfo
Informations de diagnostic supplémentaires, en fonction de la demande.
x-ms-diagnostics
Cet en-tête n’est applicable que si l’authentification OAuth est utilisée dans la demande.

Il contient un code d’erreur explicite qui spécifie pourquoi une authentification OAuth a échoué.

Elle prend le format suivant : errorId;reason="reason"error_type="error type"

Le champ raison est une description lisible de l’erreur.

Le champ errorId est un nombre integer et le champ _ type d’erreur est la représentation sous forme de chaîne de cet nombre, comme suit :
  • 2000000 : _ signature non valide
  • 2000001 : jeton _ non valide
  • 2000002 : le jeton a _ expiré
  • 2000003 : ressource _ non valide
  • 2000004 : client _ non valide
  • 2000005 : utilisateur _ non valide
  • 2000006 : _ client non valide
  • 2000007 : erreur _ interne
  • 2000008 : octroi _ non valide

Signaler la latence EWS à Microsoft

Si votre application utilise l’API gérée EWS ou EWS pour se connecter à Exchange Online, vous pouvez signaler la latence dans les demandes EWS directement à Microsoft. Les informations sont transmises via l’en-tête de requête X-ClientStatistics. Si vous utilisez l’API gérée EWS, il vous s agit de définir la propriété ExchangeService.SendClientLatencies sur true. Si vous utilisez EWS, vous devez mesurer le temps entre l’émission d’une demande et la réception d’une réponse, puis ajouter l’en-tête X-ClientStatistics à la demande EWS suivante que votre application envoie, en utilisant le format suivant.

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

Nous tenez à jour des rapports pour ces latencies et les utilisons pour améliorer en permanence les services EWS dans Exchange Online.

Étapes suivantes

Une fois que vous avez ajouté l’instrumentation client à votre application, vous êtes mieux préparé en cas de problème. Si cela se produit, vous pouvez utiliser vos données d’instrumentation pour résoudre les problèmes de votre application.

Voir aussi