Какая самая низкая точка перехвата в стеке выполнения WCF? - PullRequest
0 голосов
/ 21 января 2010

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

Итак, я установил пользовательский IClientMessageInspector, но как узнать размер фактических данных для экземпляра Message? ToString() данного Message экземпляра возвращает XML, но я не уверен, что его размер равен.

Есть ли способ подключиться к стеку WCF еще глубже и ближе к фактической отправке сообщения?

UPDATE

Нашел этот ТАК вопрос 1 год, смешно, но никто не ответил на него - https://stackoverflow.com/questions/457683/message-size-after-serialize

Ответы [ 2 ]

1 голос
/ 21 января 2010

Вы упомянули журналы trace - но вы включили message logging? Имея это в виду, вы должны иметь четкую видимость лежащих в основе сообщений, чтобы вы могли видеть точно какие данные находятся в сети?

0 голосов
/ 21 января 2010

Вы можете использовать перехватчик сообщений, однако учтите, что «тело сообщения может быть использовано только ... один раз» (см. msdn ).

По сути, вам нужно использовать Message.CreateBufferedCopy(), чтобы создать копию сообщения, с которой вам нужно иметь дело, включая вызов ToString (), чтобы вывести его куда-нибудь.

Кроме того, когда перехватчики сообщений объединены в цепочку, вы можете не видеть исходное сообщение, а то, которое было создано / изменено предыдущим перехватчиком.

Так что, если вы действительно хотите увидеть, что находится на проводе, вам, вероятно, лучше воспользоваться встроенной трассировкой WCF , как уже сказал Марк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...