我有一个有两个端点的WCF服务。一个使用basicHttpBinding,另一个使用netTcpBinding。这是我的配置......
<services>
<service name="SomeService.Service">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration=""
name="EndPointHttp" contract="SomeService.IService" />
<endpoint address="" binding="netTcpBinding" bindingConfiguration=""
name="EndPointTcp" contract="SomeService.IService" />
</service>
</services>
然而,当我使用该服务时,我试图比较两个请求之间的差异。所以我正在运行小提琴手来做这件事。我可以在Fiddler中看到basicHttpBinding请求,但我无法显示net.tcp://请求。我该怎么做才能看到这种流量?
答案 0 :(得分:14)
Fiddler是 HTTP 代理,因此它只会捕获使用HTTP协议的请求 - 它不会直接捕获使用套接字发出的请求。您可以使用Network Monitor或其他一些低级别捕获工具来执行此操作,但界面不如您可能习惯使用Fiddler的界面。
另外,正如Ladislav Mrnka在另一个答案中指出的那样,你会看到.NET Message Framing和binary XML encoding的二进制字节,所以除非你熟悉它们的大多数捕获将看起来像胡言乱语。
答案 1 :(得分:8)
Fiddler是HTTP嗅探器,而不是TCP嗅探器。您只能在fiddler中看到HTTP和HTTPS通信。如果要查看通过TCP传递的消息,则必须使用其他工具在较低级别上工作。例如WireShark,但要做好准备,你只会看到一些二进制数据。
答案 2 :(得分:3)
Fiddler是一个 HTTP 调试器。如果您没有使用HTTP,例如使用netTcpBinding,您将无法使用它捕获流量。您可以尝试Wireshark或类似的东西。
答案 3 :(得分:2)
如果您对实际消息的外观感兴趣,请尝试使用服务跟踪。
https://msdn.microsoft.com/en-us/library/ms732023%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396