Suivre les demandes et les réponses pour résoudre les problèmes des applications d’API managées EWS
Découvrez comment suivre les demandes et les réponses EWS pour résoudre les erreurs dans votre application d’API managée EWS.
Le débogage d’une application basée sur un service web peut être difficile, car une partie du traitement est effectuée sur un ordinateur distant auquel vous n’avez peut-être pas accès. Étant donné que vous ne pouvez pas parcourir le code sur le serveur, il peut être utile d’afficher les requêtes et réponses XML envoyées entre le client et le serveur pour déterminer quelle partie de l’application est à l’origine d’une erreur.
Si vous utilisez EWS, vous avez déjà accès à la requête et à la réponse XML ; vous pouvez placer un point d’arrêt dans votre code pour examiner la réponse du serveur à votre demande afin de résoudre un problème. Si vous utilisez l’API managée EWS, vous n’avez pas d’accès direct à la requête et à la réponse EWS. Toutefois, vous pouvez utiliser des méthodes de suivi sur l’objet ExchangeService pour capturer la requête et la réponse XML, puis vous pouvez utiliser le code XML pour déterminer pourquoi votre code ne fonctionne pas.
Par exemple, si vous n’avez pas défini correctement une propriété, vous pouvez obtenir une réponse inattendue et vous pouvez utiliser la sortie de trace pour examiner la requête et la réponse XML afin d’identifier l’erreur. La sortie de trace de l’API managée EWS peut également vous aider à générer manuellement la requête XML pour créer votre application EWS. Si vous utilisez EWS, vous pouvez créer une petite application à l’aide de l’API managée EWS, la suivre, puis utiliser les informations de requête XML pour vous aider à générer votre demande EWS.
Activation du suivi sur l’objet ExchangeService
Pour activer le suivi, créez un objet ExchangeService pour votre application et définissez les propriétés de suivi comme indiqué dans l’exemple suivant.
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
service.TraceListener = ITraceListenerInstance;
// Optional flags to indicate the requests and responses to trace.
service.TraceFlags = TraceFlags.EwsRequest | TraceFlags.EwsResponse
service.TraceEnabled = true;
Une fois que vous avez défini la propriété TraceEnabled sur true, toutes les requêtes qui correspondent aux indicateurs de trace sont envoyées à l’écouteur de trace spécifié. Vous pouvez spécifier un indicateur de trace unique, ou vous pouvez spécifier plusieurs indicateurs de trace en les combinant avec un OR logique. Vous pouvez utiliser l’énumération TraceFlags pour spécifier des valeurs pour EWS et pour les demandes et réponses de découverte automatique.
Implémentation d’un objet TraceListener
Vous pouvez définir la propriété TraceEnabled sur true pour générer les requêtes XML et les réponses à votre application, par exemple une fenêtre de console. Si vous souhaitez contrôler la sortie de trace et l’enregistrer dans un fichier, nous vous recommandons d’implémenter un objet de classe TraceListener . L’exemple de code suivant montre un objet simple qui implémente l’interface ITraceListener et stocke les requêtes et réponses tracées dans des fichiers XML ou texte.
class TraceListener : ITraceListener
{
#region ITraceListener Members
public void Trace(string traceType, string traceMessage)
{
CreateXMLTextFile(traceType, traceMessage.ToString());
}
#endregion
private void CreateXMLTextFile(string fileName, string traceContent)
{
// Create a new XML file for the trace information.
try
{
// If the trace data is valid XML, create an XmlDocument object and save.
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(traceContent);
xmlDoc.Save(fileName + ".xml");
}
catch
{
// If the trace data is not valid XML, save it as a text document.
System.IO.File.WriteAllText(fileName + ".txt", traceContent);
}
}
}