无法在 Fiddler 中显示 netTcpBinding 请求
Posted
技术标签:
【中文标题】无法在 Fiddler 中显示 netTcpBinding 请求【英文标题】:Can't get netTcpBinding requests to show up in Fiddler 【发布时间】:2011-09-14 06:20:00 【问题描述】:我有一个有两个端点的 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:// 请求。我该怎么做才能看到这种流量?
【问题讨论】:
【参考方案1】:Fiddler 是一个 HTTP 代理,因此它只会捕获使用 HTTP 协议的请求 - 它不会直接捕获使用套接字发出的请求。您可以使用Network Monitor 或其他一些低级捕获工具来执行此操作,但界面不如您习惯使用 Fiddler 的界面好。
此外,正如 Ladislav Mrnka 在另一个答案中所指出的,您将查看 .NET Message Framing 和 binary XML encoding 的二进制字节,因此除非您熟悉它们,否则大多数捕获看起来像胡言乱语。
【讨论】:
【参考方案2】:Fiddler 是 HTTP 嗅探器而不是 TCP 嗅探器。在 fiddler 中只能看到 HTTP 和 HTTPS 通信。如果您想查看通过 TCP 传递的消息,您必须使用另一个在较低级别上工作的工具。例如 WireShark,但要做好准备,您只会看到一些二进制数据。
【讨论】:
【参考方案3】:Fiddler 是一个 HTTP 调试器。如果您不使用 HTTP,例如使用 netTcpBinding,您将无法使用它捕获流量。你可以试试Wireshark 或类似的东西。
【讨论】:
【参考方案4】:如果您对实际消息的外观感兴趣,请尝试使用 Service Trace。
https://msdn.microsoft.com/en-us/library/ms732023%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
【讨论】:
以上是关于无法在 Fiddler 中显示 netTcpBinding 请求的主要内容,如果未能解决你的问题,请参考以下文章