如何使用Fiddler调试来自任何应用程序的流量(例如C#/ WPF应用程序)

时间:2010-10-09 08:31:18

标签: c# wpf httpwebrequest webclient fiddler

我想调试来自another question here on SO的HTTP请求的错误。所以我读了一下Fiddler,想用它来调试我的问题。但我似乎无法通过我的WPF应用程序获得通过Fiddler的流量。我相信我需要配置一个代理。我使用WebClient作为基本示例,但我想我稍后将需要WebRequest。但是现在,通过一个简单的WebClient,我怎样才能让它通过Fiddler(我相信我必须将代理设置为localhost:8888)?

更新

我不知道我是否做对了,但我试过

var wc = new WebClient();
WebProxy proxy = new WebProxy();
proxy.Address = new Uri("http://localhost:8888");
wc.Proxy = proxy;

但失败了 - 我在Fiddler看不到任何流量

我试过......

var wc = new WebClient();
WebProxy proxy = new WebProxy("127.0.0.1", 8888);
wc.Proxy = proxy;

仍然没有

5 个答案:

答案 0 :(得分:51)

我在this fiddler2.com page

找到了解决方案
  

为什么我看不到发送的流量   http://localhosthttp://127.0.0.1?

     

Internet Explorer和.NET Framework硬编码不发送   通过任何方式请求Localhost   代理人,作为代理,Fiddler会   没有收到这样的流量。

     

最简单的解决方法是使用您的计算机名称作为主机名   而不是Localhost或127.0.0.1。所以,   例如,而不是打   http://localhost:8081/mytestpage.aspx,   而是访问   http://machinename:8081/mytestpage.aspx

答案 1 :(得分:16)

也许有点晚了,但是......

我只是通过向localhost添加“dot”来解决这个问题,因此我尝试访问localhost而不是访问localhost.(注意主机名末尾的点)

信用到期的信用: 我从这个帖子中获得了这个不寻常的提示http://www.west-wind.com/weblog/posts/2009/Jan/14/Monitoring-HTTP-Output-with-Fiddler-in-NET-HTTP-Clients-and-WCF-Proxies#596591

工作正常!

答案 2 :(得分:12)

您可以在下面的帖子中找到答案 https://stackoverflow.com/a/7506427/471499

它列出您需要在web.config或App.Config

中添加它
<system.net>
  <defaultProxy>
    <proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" />
  </defaultProxy>
</system.net>
  1. 然后在运行应用程序的同一台机器上启动Fiddler。
  2. 点击工具| Fiddler Options =&gt; Connections =&gt;将端口调整为8888.(如果需要,允许远程)
  3. 好的,然后从文件菜单中捕获流量。
  4. 这就是全部,但在关闭小提琴手后不要忘记删除web.config行,因为如果你不这样做就会出错。

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

答案 3 :(得分:3)

我一直使用以下配置重定向网络HTTP调用以从我的应用程序传递fiddler代理。

这适用于所有类型的.NET应用程序(包含web.configapp.config文件),在fiddler中最好禁用Capture Traffic选项以避免从所有应用程序捕获一般流量应用运行。这方面的快捷键是 F12

<system.net>
    <defaultProxy>
        <proxy proxyaddress="http://localhost:8888/" />
    </defaultProxy>
</system.net>

如果您有第三方程序集,而您无法更改调用URL的代码,则这是有价值的配置。

我希望这有助于某人。

答案 4 :(得分:1)

“IIS Express不会接收到machinename的流量,因此转而使用localhost.fiddler fiddler2.com/documentation/Configure-Fiddler/Troubleshooting/... - robrich 2013年5月9日6:02”

上面的RobRich说得对。 这是唯一可行的,因为我只能使用IIS Express。