Fiddler 不捕获 WCF 流量但捕获 ASMX 很好

Posted

技术标签:

【中文标题】Fiddler 不捕获 WCF 流量但捕获 ASMX 很好【英文标题】:Fiddler Not Capturing WCF traffic but capturing ASMX fine 【发布时间】:2013-10-01 04:49:54 【问题描述】:

我一直在使用 Fiddler 为一些调用其他 ASMX 服务的 ASMX 服务捕获流量。在这种情况下,我有一个简单的 WCF 服务调用这些 ASMX 服务。它不会捕获任何流量。唯一的问题是它使用的是 IIS 而不是 IISExpress (http://localhost/Interface12Service/Interface12Service.svc)。如何捕获 WCF 流量?

【问题讨论】:

【参考方案1】:

Microsoft .NET 框架经过硬编码,可以绕过对http://localhost 的任何请求的代理。要在 Fiddler 或任何其他代理中捕获此类请求,请使用

http://machinename:port/

http://localhost.fiddler:port/

作为目标 URL。

【讨论】:

我不想相信这就是答案……或者它甚至会起作用……但确实如此!【参考方案2】:

默认情况下,Fiddler 不会捕获流量。如果您希望它捕获流量,请将客户端代理基地址更改为您的机器名称或您的 IP(例如:127.0.0.1)。这应该可以解决问题。如果没有,请尝试this。

【讨论】:

或者,您也可以使用 WireShark 或尝试Charles proxy。 Charles 也是一个代理,并且受到与任何其他代理完全相同的限制。【参考方案3】:

可能只是提琴手难以从本地主机获取流量 试试把地址改成http://localhost./Interface12Service/Interface12Service.svc

(注意 localhost 后面的点。)这是使用 Fiddler 的常见技巧。

【讨论】:

如果我正在调试 IIS 服务并且它直接进入 IIS 测试客户端,如何设置?无法更改 URL。【参考方案4】:

另一个可能的问题与WCF 客户端有关(这也可能包括其他客户端,但我不确定)。 可以将客户端配置为不使用机器默认代理,这使得客户端/应用程序绕过 Fiddler 捕获。

进一步阅读:What is the purpose of usedefaultwebproxy in WCF.

【讨论】:

以上是关于Fiddler 不捕获 WCF 流量但捕获 ASMX 很好的主要内容,如果未能解决你的问题,请参考以下文章

如何在fiddler中捕获python https流量?

Maven:如何通过 Fiddler 捕获 HTTPS 流量

使用 fiddler 捕获 Windows 商店应用程序流量引发异常

Fiddler 未捕获任何浏览器流量并向我显示此错误

通过 Fiddler 捕获 Java https 并获取 javax.net.ssl.SSLHandshakeException

Fiddler - 被捕获的 IP 地址而不是来自 android 模拟器的 URL