WCF运行时堆栈中最低的拦截点是什么?

时间:2010-01-21 12:21:20

标签: .net wcf message

我希望调试为什么我的应用程序使用下面的WCF发送如此多的数据。我试图检查WCF跟踪日志并使用Fiddler检查流量,但我需要一个堆栈跟踪导致违规的客户端代码。

所以,我安装了一个自定义IClientMessageInspector,但是如何知道给定Message实例的实际数据的大小?给定ToString()实例的Message返回一个XML,但我不确定它的大小是否正确。

有没有办法更深入地挂钩到WCF堆栈并更接近实际发送消息?

更新

发现这个问题1岁,很有趣,但没有人回答 - https://stackoverflow.com/questions/457683/message-size-after-serialize

2 个答案:

答案 0 :(得分:1)

您提及跟踪日志 - 但您是否已启用消息日志记录?有了这个,您应该清楚地了解底层消息,因此您应该能够看到完全哪些数据在线上?

答案 1 :(得分:0)

您可以使用消息拦截器,但请注意“消息的正文只能被消费......一次”(参见msdn)。

本质上,您需要使用Message.CreateBufferedCopy()创建要处理的消息副本,包括调用ToString()将其转储到某处。

此外,当链接消息拦截器时,您可能看不到原始消息,而是前一个拦截器已创建/更改的消息。

所以,如果你真的只想看看网络上有什么内容,你可能会更好地使用内置WCF tracing,正如Marc已经说过的那样。