Просмотр журналов сообщений
В этом разделе описывается порядок просмотра журналов сообщений.
Просмотр журналов сообщений с помощью программы Service Trace Viewer
Сообщение будет преобразовано по мере обработки WCF. Следовательно, заносимое в журнал сообщение отражает только содержимое сообщения в точке его регистрации (записи в журнал), но не содержимое, передаваемое по линии связи.
Поскольку формат записи сообщения в журнал никак не связан с форматом передачи сообщения, в журнал сообщения всегда заносятся в раскодированном виде. Если ведение журнала сообщений настроено надлежащим образом, все сообщения в журнале должны быть представлены в виде обычного текста. Например, на формат (обычный текст) сообщений в журнале никак не влияет использование двоичного кодировщика сообщений.
Выходные данные прослушивателя XmlWriterTraceListener представляют собой файл, содержащий последовательность XML-фрагментов. Необходимо иметь в виду, что этот файл не является допустимым файлом XML. Рекомендуется использовать средство просмотра трассировки служб (SvcTraceViewer.exe) для просмотра файлов журнала сообщений. Дополнительные сведения об использовании этого средства см. в разделе "Использование средства просмотра трассировки службы" для просмотра коррелированных трассировок и устранения неполадок.
В средстве просмотра трассировки службы сообщения отображаются на вкладке "Сообщение ". Сообщения, вызванные или связанные с ними, выделены желтым (уровень предупреждения) или красным (уровень ошибки) в зависимости от серьезности ошибки. При двойном щелчке на сообщении открывается трассировка сообщения в контексте запроса на обработку.
Примечание.
Если сообщение не имеет заголовка, тег <header/>
в журнал не записывается.
Просмотр сообщений, записанных в журнал клиентом, ретранслятором и службой
Конкретная среда может содержать клиент, который отправляет сообщение ретранслятору, который в свою очередь пересылает сообщение службе. Если ведение журнала сообщений включено во всех трех расположениях, а все три журнала сообщений отображаются одновременно в средстве просмотра трассировки служб (SvcTraceViewer.exe), обмен журналами сообщений будет неправильно отображаться. Это связано с тем, что идентификаторы CorrelationId
и ActivityId
в заголовке сообщения не являются уникальными для каждой пары "отправка-получение".
Решить эту проблему можно одним из следующих способов.
В любое время просмотрите только два из трех журналов сообщений в средстве просмотра трассировки службы (SvcTraceViewer.exe).
Если вы должны одновременно просмотреть все три журнала в средстве просмотра трассировки служб (SvcTraceViewer.exe), можно изменить службу ретрансляции, создав новый Message экземпляр. Этот экземпляр должен представлять собой копию тела входящего сообщения плюс все заголовки, за исключением заголовков
ActivityId
иAction
. В следующем примере кода показано, как это сделать.
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 включено кодирование.