我希望调试为什么我的应用程序使用下面的WCF发送如此多的数据。我试图检查WCF跟踪日志并使用Fiddler检查流量,但我需要一个堆栈跟踪导致违规的客户端代码。
所以,我安装了一个自定义IClientMessageInspector
,但是如何知道给定Message
实例的实际数据的大小?给定ToString()
实例的Message
返回一个XML,但我不确定它的大小是否正确。
有没有办法更深入地挂钩到WCF堆栈并更接近实际发送消息?
更新
发现这个问题1岁,很有趣,但没有人回答 - https://stackoverflow.com/questions/457683/message-size-after-serialize
答案 0 :(得分:1)
您提及跟踪日志 - 但您是否已启用消息日志记录?有了这个,您应该清楚地了解底层消息,因此您应该能够看到完全哪些数据在线上?
答案 1 :(得分:0)
您可以使用消息拦截器,但请注意“消息的正文只能被消费......一次”(参见msdn)。
本质上,您需要使用Message.CreateBufferedCopy()
创建要处理的消息副本,包括调用ToString()将其转储到某处。
此外,当链接消息拦截器时,您可能看不到原始消息,而是前一个拦截器已创建/更改的消息。
所以,如果你真的只想看看网络上有什么内容,你可能会更好地使用内置WCF tracing,正如Marc已经说过的那样。