Поделиться через


Просмотр журналов сообщений

В этом разделе описывается порядок просмотра журналов сообщений.

Просмотр журналов сообщений с помощью программы Service Trace Viewer

Сообщение будет преобразовано по мере обработки WCF. Следовательно, заносимое в журнал сообщение отражает только содержимое сообщения в точке его регистрации (записи в журнал), но не содержимое, передаваемое по линии связи.

Поскольку формат записи сообщения в журнал никак не связан с форматом передачи сообщения, в журнал сообщения всегда заносятся в раскодированном виде. Если ведение журнала сообщений настроено надлежащим образом, все сообщения в журнале должны быть представлены в виде обычного текста. Например, на формат (обычный текст) сообщений в журнале никак не влияет использование двоичного кодировщика сообщений.

Выходные данные прослушивателя XmlWriterTraceListener представляют собой файл, содержащий последовательность XML-фрагментов. Необходимо иметь в виду, что этот файл не является допустимым файлом XML. Рекомендуется использовать средство просмотра трассировки служб (SvcTraceViewer.exe) для просмотра файлов журнала сообщений. Дополнительные сведения об использовании этого средства см. в разделе "Использование средства просмотра трассировки службы" для просмотра коррелированных трассировок и устранения неполадок.

В средстве просмотра трассировки службы сообщения отображаются на вкладке "Сообщение ". Сообщения, вызванные или связанные с ними, выделены желтым (уровень предупреждения) или красным (уровень ошибки) в зависимости от серьезности ошибки. При двойном щелчке на сообщении открывается трассировка сообщения в контексте запроса на обработку.

Примечание.

Если сообщение не имеет заголовка, тег <header/> в журнал не записывается.

Просмотр сообщений, записанных в журнал клиентом, ретранслятором и службой

Конкретная среда может содержать клиент, который отправляет сообщение ретранслятору, который в свою очередь пересылает сообщение службе. Если ведение журнала сообщений включено во всех трех расположениях, а все три журнала сообщений отображаются одновременно в средстве просмотра трассировки служб (SvcTraceViewer.exe), обмен журналами сообщений будет неправильно отображаться. Это связано с тем, что идентификаторы CorrelationId и ActivityId в заголовке сообщения не являются уникальными для каждой пары "отправка-получение".

Решить эту проблему можно одним из следующих способов.

Message outgoingMessage = Message.CreateMessage(incomingMessage.Version, incomingMessage.Headers.Action, incomingMessage.GetReaderAtBodyContents());  
  
for (int i = 0; i < incomingMessage.Headers.Count; i++)  
{  
   if (incomingMessage.Headers[i].Name.Equals("ActivityId", StringComparison.InvariantCultureIgnoreCase) ||  
incomingMessage.Headers[i].Name.Equals("Action", StringComparison.InvariantCultureIgnoreCase))  
   {  
      continue;  
    }  
    outgoingMessage.Headers.CopyHeaderFrom(incomingMessage, i);  
}  

Исключительные случаи неточного воспроизведения содержимого сообщений в журналах

В следующих случаях сообщения, записываемые в журнал, могут не соответствовать в точности потоку октетов, передаваемому по линии связи.

  • При использовании привязки BasicHttpBinding в журнал записываются заголовки конвертов входящих сообщений в пространстве имен /addressing/none.

  • Пробелы могут быть несогласованы.

  • Пустые элементы во входящих сообщениях могут быть представлены иначе. Например, <тег/тег вместо тега></><>

  • Когда отключена регистрация известных персональных данных (по умолчанию или путем явного задания enableLoggingKnownPii="true").

  • Когда для преобразования в UTF-8 включено кодирование.

См. также