Вы можете использовать перехватчик сообщений, однако учтите, что «тело сообщения может быть использовано только ... один раз» (см. msdn ).
По сути, вам нужно использовать Message.CreateBufferedCopy()
, чтобы создать копию сообщения, с которой вам нужно иметь дело, включая вызов ToString (), чтобы вывести его куда-нибудь.
Кроме того, когда перехватчики сообщений объединены в цепочку, вы можете не видеть исходное сообщение, а то, которое было создано / изменено предыдущим перехватчиком.
Так что, если вы действительно хотите увидеть, что находится на проводе, вам, вероятно, лучше воспользоваться встроенной трассировкой WCF , как уже сказал Марк.