4

我有 Web 应用程序并在内部调用 WCF 和 ASMX 服务来获取信息。但是,在 fildder 中,我只能看到唯一的 web 应用程序 aspx 请求,而不是 WCF 和 asmx 服务调用。

我如何在 Fiddler trafiice 中捕获那些 WCF 和 asmx 调用。

如果提琴手没有该选项,请推荐一些其他工具。

4

2 回答 2

9

默认情况下,Fiddler 作为代理服务器运行,它捕获通过它的流量。

当您在客户端上运行 Fiddler 时,您的浏览器会通过 Fiddler 将请求传递到服务器。如果您的客户端和服务器在同一台 PC 上,由于 .NET Framework 中的硬编码限制,发送到localhost127.0.0.1可能绕过 Fiddler 的流量(浏览器没有此问题)。

为了解决这个问题,您可以更新 .NET 代码以点击Fiddler 支持的别名之一,即:或或。localhostlocalhost.fiddleripv4.fiddleripv6.fiddler

如果 Fiddler在服务器上运行并且您想要捕获服务器端代码发出的请求(例如来自 ASP.NET 的出站请求),那么您需要配置您的 ASP.NET 应用程序以将其流量发送到 Fiddler。这是因为,当 Fiddler 运行时,它会将当前用户配置为将其流量发送到 Fiddler,但 ASP.NET 在Windows 服务帐户内而不是在当前用户的帐户内运行。有几种方法可以捕获从 ASP.NET 内部发出的请求,但这篇博文总结了最简单的方法。更新适当的machine.config(通常是文件的 64 位版本)以包含该行

<proxy autoDetect="false" bypassonlocal="false" proxyaddress="http://127.0.0.1:8888" usesystemdefault="false" />

现在,如果 Fiddler在不同的服务器上运行,那么您必须配置代理设置以指向 Fiddler正在运行的任何机器,例如

<proxy autoDetect="false" bypassonlocal="false" proxyaddress="http://MyFiddlerServer:8888" usesystemdefault="false" />

于 2013-09-16T15:25:25.340 回答
-2

Fiddler 的工作原理是在一个端口(例如 8888)拦截 Web 请求,然后将请求转发到您在 WCF 中设置的实际目标端口(例如 8000)。这就是允许 Fiddler 捕获主机和客户端之间的双向流量的原因。

因此,您需要在客户端或主机上运行提琴手。然后,在启动 Fiddler 后,转到 Tools 菜单并选择 Fiddler Options,确保它正在侦听端口 8888。接下来,转到 Rules 菜单,选择 Customize Rules 并在 Handlers 类中添加如下代码:

if (oSession.host=="localhost:8888") { 
     oSession.host="localhost:8000";
}

接下来,更改您的客户端应用程序,使其使用 8888(而不是普通端口#),然后运行该程序。如果设置正确,Fiddler 将充当中间人,拦截并记录请求和响应。

祝你好运。如果这可以作为答案,请不要忘记标记它。

于 2013-09-16T11:59:46.523 回答