Seguimiento de solicitudes y respuestas para solucionar problemas de aplicaciones de API administradas de EWS

Obtenga información sobre cómo realizar un seguimiento de las solicitudes y respuestas de EWS para solucionar errores en la aplicación de API administrada de EWS.

La depuración de una aplicación basada en servicios web puede ser difícil porque parte del procesamiento se realiza en un equipo remoto al que es posible que no tenga acceso. Dado que no puede recorrer el código en el servidor, puede resultar útil ver las solicitudes y respuestas XML que se envían entre el cliente y el servidor para determinar qué parte de la aplicación está causando un error.

Si usa EWS, ya tiene acceso a la solicitud y respuesta XML; puede colocar un punto de interrupción en el código para revisar la respuesta del servidor a la solicitud con el fin de solucionar un problema. Si usa la API administrada de EWS, no tiene acceso directo a la solicitud y respuesta de EWS. Sin embargo, puede usar métodos de seguimiento en el objeto ExchangeService para capturar la solicitud y respuesta XML y, a continuación, puede usar el XML para determinar por qué el código no funciona.

Por ejemplo, si no estableció una propiedad correctamente, puede obtener una respuesta inesperada y puede usar la salida de seguimiento para examinar la solicitud y la respuesta XML para identificar el error. La salida de seguimiento de la API administrada de EWS también puede ayudarle a compilar manualmente la solicitud XML para crear la aplicación EWS. Si usa EWS, puede crear una aplicación pequeña mediante la API administrada de EWS, realizar un seguimiento de ella y, a continuación, usar la información de solicitud XML para ayudarle a compilar la solicitud de EWS.

Habilitación del seguimiento en el objeto ExchangeService

Para habilitar el seguimiento, cree un objeto ExchangeService para la aplicación y establezca las propiedades de seguimiento como se muestra en el ejemplo siguiente.

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;

Después de establecer la propiedad TraceEnabled entrue, todas las solicitudes que coincidan con las marcas de seguimiento se enviarán al agente de escucha de seguimiento especificado. Puede especificar una sola marca de seguimiento o puede especificar varias marcas de seguimiento combinándolas con un OR lógico. Puede usar la enumeración TraceFlags para especificar valores para EWS y para solicitudes y respuestas de detección automática.

Implementación de un objeto TraceListener

Puede establecer la propiedad TraceEnabled en true para generar las solicitudes y respuestas XML a la aplicación, como una ventana de consola. Si desea controlar la salida de seguimiento y guardarla en un archivo, se recomienda implementar un objeto de clase TraceListener . En el ejemplo de código siguiente se muestra un objeto simple que implementa la interfaz ITraceListener y almacena las solicitudes y respuestas rastreadas en archivos XML o de texto.

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);
      }
    }
}

Vea también