Rastrear solicitações e respostas para solucionar problemas de aplicativos de API Gerenciada do EWS

Descubra como rastrear solicitações e respostas do EWS para solucionar problemas de erros em seu aplicativo de API Gerenciada do EWS.

A depuração de um aplicativo baseado em serviço Web pode ser difícil porque parte do processamento é executada em um computador remoto ao qual talvez você não tenha acesso. Como você não pode passar pelo código no servidor, pode ser útil ver as solicitações XML e as respostas enviadas entre o cliente e o servidor para determinar qual parte do aplicativo está causando um erro.

Se você estiver usando o EWS, já terá acesso à solicitação XML e à resposta; você pode colocar um ponto de interrupção em seu código para examinar a resposta do servidor à sua solicitação, a fim de solucionar um problema. Se você estiver usando a API Gerenciada do EWS, não terá acesso direto à solicitação e resposta do EWS. No entanto, você pode usar métodos de rastreamento no objeto ExchangeService para capturar a solicitação e a resposta XML e, em seguida, você pode usar o XML para determinar por que seu código não está funcionando.

Por exemplo, se você não definiu uma propriedade corretamente, poderá obter uma resposta inesperada e poderá usar a saída de rastreamento para examinar a solicitação XML e a resposta para identificar o erro. A saída de rastreamento da API Gerenciada do EWS também pode ajudá-lo a criar manualmente a solicitação XML para criar seu aplicativo EWS. Se você estiver usando o EWS, poderá criar um aplicativo pequeno usando a API Gerenciada do EWS, rastreá-lo e, em seguida, usar as informações de solicitação XML para ajudá-lo a criar sua solicitação EWS.

Habilitando o rastreamento no objeto ExchangeService

Para habilitar o rastreamento, crie um objeto ExchangeService para seu aplicativo e defina as propriedades de rastreamento, conforme mostrado no exemplo a seguir.

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;

Depois de definir a propriedade TraceEnabled como true, todas as solicitações que correspondem aos sinalizadores de rastreamento serão enviadas para o ouvinte de rastreamento especificado. Você pode especificar um único sinalizador de rastreamento ou especificar vários sinalizadores de rastreamento combinando-os com uma OR lógica. Você pode usar a enumeração TraceFlags para especificar valores para EWS e para solicitações e respostas de descoberta automática.

Implementando um objeto TraceListener

Você pode definir a propriedade TraceEnabledcomo true para gerar as solicitações e respostas XML para seu aplicativo, como uma janela de console. Se você quiser controlar a saída de rastreamento e salvá-la em um arquivo, recomendamos que você implemente um objeto de classe TraceListener . O exemplo de código a seguir mostra um objeto simples que implementa a interface ITraceListener e armazena as solicitações e respostas rastreadas em arquivos XML ou 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);
      }
    }
}

Confira também