Трассировка запросов и ответов для устранения неполадок приложений управляемого API EWS

Узнайте, как отслеживать запросы и ответы EWS для устранения ошибок в приложении EWS Managed API.

Отладка приложения на основе веб-службы может оказаться сложной задачей, так как часть обработки выполняется на удаленном компьютере, к которому у вас может не быть доступа. Так как вы не можете выполнить пошаговое выполнение кода на сервере, полезно просмотреть XML-запросы и ответы, отправляемые между клиентом и сервером, чтобы определить, какая часть приложения вызывает ошибку.

Если вы используете EWS, у вас уже есть доступ к XML-запросу и ответу; Вы можете поставить точку останова в коде, чтобы проверить ответ сервера на запрос, чтобы устранить проблему. Если вы используете управляемый API EWS, у вас нет прямого доступа к запросу и ответу EWS. Однако можно использовать методы трассировки в объекте ExchangeService для записи XML-запроса и ответа, а затем с помощью XML-кода определить, почему код не работает.

Например, если вы неправильно задали свойство, вы можете получить непредвиденный ответ и использовать выходные данные трассировки для просмотра XML-запроса и ответа для выявления ошибки. Выходные данные трассировки управляемого API EWS также помогут вручную создать XML-запрос для создания приложения EWS. Если вы используете EWS, вы можете создать небольшое приложение с помощью управляемого API EWS, выполнить его трассировку, а затем использовать сведения о XML-запросе, чтобы помочь в создании запроса EWS.

Включение трассировки для объекта ExchangeService

Чтобы включить трассировку, создайте объект ExchangeService для приложения и задайте свойства трассировки, как показано в следующем примере.

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;

После установки свойству TraceEnabled значения true все запросы, соответствующие флагам трассировки, будут отправляться указанному прослушивателю трассировки. Можно указать один флаг трассировки или указать несколько флагов трассировки, объединяя их с логическим ИЛИ. Перечисление TraceFlags можно использовать для указания значений для EWS и запросов и ответов автообнаружения.

Реализация объекта TraceListener

Для свойства TraceEnabled можно задать значение true , чтобы вывести XML-запросы и ответы в приложение, например окно консоли. Если вы хотите управлять выходными данными трассировки и сохранять их в файл, рекомендуется реализовать объект класса TraceListener . В следующем примере кода показан простой объект, который реализует интерфейс ITraceListener и сохраняет трассированные запросы и ответы в XML-файлах или текстовых файлах.

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

См. также