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