获取使用HttpWebRequest / HttpWebResponse进行的HTTP请求和响应以显示在Fiddler中

有没有什么办法可以把Fiddler挂起来捕获使用.NET HttpWebRequest和HttpWebResponse所做的请求和响应?

检查这个博客文章,我认为这就是你想要的。

小提琴常见问题解答给出了这个答案。

你本质上是通过Fiddler(即使用Fiddler作为代理)路由你的HTTPstream量。

这里有一些链接,将有助于:
提琴手Webdebugging – configuration客户端

这反过来链接到这里:
在.NET中使用自动configuration来closures用户的负担

您可以通过web.config文件中的一些configuration设置(对于ASP.NET应用程序)来实现此目的:

<system.net> <defaultProxy> <proxy proxyaddress="http://[your proxy address and port number]" bypassonlocal="false" /> </defaultProxy> </system.net> 

有关<defaultProxy>设置的完整详细信息,请参阅此处 。

或者,你可以在你的代码中使用类似下面的代码来使用WebProxy对象:

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("[ultimate destination of your request]"); WebProxy myproxy = new WebProxy("[your proxy address]", false); request.Proxy = myproxy; request.Method = "GET"; HttpWebResponse response = (HttpWebResponse) request.GetResponse(); 

在这里查看WebProxy类的完整详细信息。

还要注意提琴手FAQ中提到的重要的“警告”:

为什么我看不到stream量发送到http:// localhost或http://127.0.0.1
IE7和.NET Framework被硬编码为不通过任何代理发送Localhost请求,而作为代理,Fiddler不会收到这样的通信。

解决方法是使用您的计算机名称作为主机名而不是Localhost或127.0.0.1。 因此,例如,而不是击中http:// localhost:8081 / mytestpage.aspx ,而是访问http:// machinename:8081 / mytestpage.aspx 。

…或者,如果您使用Fiddler v2.1.8或更高版本,只需使用http://ipv4.fiddler在IPv4适配器上打本地主机,或者使用http://ipv6.fiddler在IPv6适配器上打本地主机。 这对于Visual Studiotestingnetworking服务器(代号:Cassini)特别有效,因为testing服务器只监听IPv4回送适配器。

最后,你可以像这样定制你的规则文件:

  static function OnBeforeRequest(oSession:Fiddler.Session) { if (oSession.HostnameIs("MYAPP")) { oSession.host = "127.0.0.1:8081"; } } 

…然后点击http:// myapp ,将作为127.0.0.1:8081的别名。

如果你不能, Wireshark是一个类似于networking硬件级别的工具,所以它可以捕获任何应用程序的networkingstream量。

Wireshark比Fiddler稍微复杂一点,但它是一个很好的工具,在你的工具箱中,值得花一点时间研究一下。

如果您可以修改请求URI,并且它是localhost那么有一个更简单的解决scheme:将主机名更改为localhost.fiddler

这不依赖于设置代理(无论是在.config文件中设置HttpWebRequest.Proxy还是<defaultProxy>元素)。

(来自这个问题的评论。)