有没有什么办法可以勾小提琴手来捕获使用.NET HttpWebRequest和HttpWebResponse提出的请求和响应?
Answer 1:
小提琴手常见问题给出了答案。
你基本上是借道提琴手(即使用Fiddler作为代理)的HTTP流量。
下面是一些链接,这将有助于:
提琴手Web调试-配置客户端
这反过来又链接到这里:
就拿负担关闭用户与自动配置在.NET
您可以通过在web.config文件(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类的完整细节。
还要注意,在提琴手常见问题解答中提到的重要的“警告”:
为什么我看不到发送到交通的http://本地主机或http://127.0.0.1 ?
IE7和.NET Framework是硬编码不经过代理服务器发送请求的本地主机,并作为代理,提琴手不会收到这样的交通。解决方法是使用你的机器名作为主机名而不是本地主机或127.0.0.1。 所以,举例来说,而不是打的http://本地主机:8081 / mytestpage.aspx ,而不是访问的http://机器:8081 / mytestpage.aspx 。
...或者,如果你使用的提琴手v2.1.8或更高版本,只需使用HTTP://ipv4.fiddler打IPv4的适配器在本地主机上,或使用HTTP://ipv6.fiddler打本地主机IPv6的适配器上。 这个效果特别好与Visual Studio测试Web服务器(代号:卡西尼),因为测试服务器只监听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。
Answer 2:
如果你不能, Wireshark的是一个类似的工具,在网络硬件水平的作品,因此它可以从任何应用程序捕获网络流量。
Wireshark是不是提琴手更复杂一点,更普遍的,但它是一个伟大的工具,在你的工具箱,值得研究了一些时间到。
Answer 3:
如果你能够修改请求URI,它是localhost
然后有一个更简单的解决方案:更换主机名localhost.fiddler
。
这对设置代理没有依赖性(是否设置HttpWebRequest.Proxy
或<defaultProxy>
在一个元件.config
文件)。
(从在评论这个问题 。)