我有Web应用程序并在内部调用WCF和ASMX服务来获取信息。 但是,在fildder中,我能够单独看到唯一的Web应用程序aspx请求,而不是WCF和asmx服务调用。
如何在Fiddler流量中捕获这些WCF和asmx调用。
如果fiddler没有这个选项,请提供一些其他工具。
答案 0 :(得分:7)
默认情况下,Fiddler作为代理服务器运行,它捕获通过它传递的流量。
当您在客户端上运行 Fiddler 时,您的浏览器会在前往服务器的途中通过Fiddler传递请求。如果您的客户端和服务器位于同一台PC上,则由于.NET Framework中的硬编码限制,发送到localhost
或127.0.0.1
的流量可能会绕过Fiddler(浏览器没有此问题)。
要解决此问题,您可以更新.NET代码以点击Fiddler支持的localhost
的其中一个别名,即:localhost.fiddler
或{{1} }或ipv4.fiddler
。
如果Fiddler在服务器上运行 并且您想捕获服务器端代码发出的请求(例如来自ASP.NET的出站请求),那么您需要配置ASP.NET应用程序以发送其到了提琴手的交通。这是因为,当Fiddler运行时,它会配置当前用户以将其流量发送到Fiddler,但ASP.NET在 Windows服务帐户内运行,而不是在当前用户的帐户内运行。有几种方法可以捕获从ASP.NET内部发出的请求,但this blog post总结了最简单的方法。更新相应的ipv6.fiddler
(通常是文件的64位版本)以包含行
machine.config
现在,如果Fiddler在另一台服务器上运行 ,那么您必须将代理设置配置为指向运行Fiddler 的任何机器,例如
<proxy autoDetect="false" bypassonlocal="false" proxyaddress="http://127.0.0.1:8888" usesystemdefault="false" />
答案 1 :(得分:-2)
Fiddler通过拦截一个端口(例如8888)的Web请求,然后将请求转发到您在WCF中设置的实际目标端口(比如8000)。这就是Fiddler捕获主机和客户端之间的双向流量的原因。
所以你需要在客户端或主机上运行fiddler。然后,在启动Fiddler之后,转到Tools菜单并选择Fiddler Options,确保它正在侦听端口8888.接下来,转到Rules菜单,选择Customize Rules并在Handlers类中添加如下代码:
if (oSession.host=="localhost:8888") {
oSession.host="localhost:8000";
}
接下来,更改您的客户端应用程序,使其使用8888(而不是正常的端口#),然后运行该程序。如果设置正确,Fiddler将作为中间人,拦截并记录请求和响应。
祝你好运。如果这可以作为答案,请不要忘记标记它。