如何使用Fiddler监视WCF服务

Qua*_*chs 104 wcf fiddler

我有一个接受复杂类型的WCF服务并返回一些数据.我想使用Fiddler来查看对服务的传入请求是什么样的.客户端是.net控制台应用程序,它使用服务引用代理.这与Fiddler有关吗?我是这个工具的新手,并且过去只使用它来使用请求构建器发布数据.

Tar*_*lah 145

您需要在web.config中添加它

<system.net>
  <defaultProxy>
    <proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" />
  </defaultProxy>
</system.net>
Run Code Online (Sandbox Code Playgroud)
  1. 然后在WEBSERVER机器上启动Fiddler.
  2. 单击工具| Fiddler Options => Connections =>将端口调整为8888.(如果需要,允许远程)
  3. 好的,然后从文件菜单中捕获流量.

这就是全部,但是在关闭fiddler之后不要忘记删除web.config行,因为如果你不这样做就会出错.

参考:http://fiddler2.com/documentation/Configure-Fiddler/Tasks/UseFiddlerAsReverseProxy

  • 谢谢,它对我有用.顺便说一句,在我的情况下,我试图在**localhost**上捕获WCF客户端流量,因此除了添加您的设置之外,还需要将URL从`http:// localhost/abc.svc`更改为`http ://主机名/ abc.svc` (5认同)
  • 惊人的!@cateyes 的建议为我做了 (2认同)

Jus*_*ner 8

Fiddler监听出站请求而不是入站请求,因此您无法使用Fiddler监控进入您服务的所有请求.

使用Fiddler最好的是能够查看由控制台应用程序生成的所有请求(假设应用程序生成Web请求而不是使用其他管道).

如果您想要一个功能更强大(但更难以使用)的工具,可以监控所有传入的请求,那么您应该查看WireShark.

编辑

我纠正了.感谢Eric Law发布了将Fiddler配置为反向代理的指示!

  • 这不太准确("权力"是主观的,因为WireShark无法改变流量).有关如何监听入站流量的更多详细信息,请参见http://www.fiddler2.com/fiddler/help/reverseproxy.asp. (9认同)

L-F*_*our 8

刚出现这个问题,对我有用的是使用localhost.fiddler:

 <endpoint address="http://localhost.fiddler/test/test.svc"
            binding="basicHttpBinding" 
            bindingConfiguration="customBinding" 
            contract="test" 
            name="customBinding"/>
Run Code Online (Sandbox Code Playgroud)


drz*_*aus 6

整合几个用例的评论/答案中提到的警告.

大多数情况下,请参阅http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureDotNETApp

  • 在你的应用程序之前启动Fiddler
  • 在控制台应用程序中,您可能不需要指定proxyaddress:

    <proxy bypassonlocal="False" usesystemdefault="True" />
    
    Run Code Online (Sandbox Code Playgroud)
  • 在IIS中托管的Web应用程序中,您需要添加proxyaddress:

    <proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" />
    
    Run Code Online (Sandbox Code Playgroud)
  • 当.NET发出请求时(通过服务客户端或HttpWebRequest等),它将始终绕过包含的URL的Fiddler代理localhost,因此您必须使用机器名等别名或在"主机"文件中组成内容(这就是为什么类似localhost.fiddlerhttp://HOSTNAME工作的东西)
  • 如果你指定了proxyaddress,如果Fiddler没有打开,你必须从你的配置中删除它,或者你的应用程序发出的任何请求都会抛出异常,例如:

    无法建立连接,因为目标计算机主动拒绝它127.0.0.1:8888

  • 不要忘记使用配置转换来删除生产中的代理部分