在.net 4.5中通过提琴手捕获流量

时间:2013-01-05 10:05:14

标签: httpwebrequest fiddler

我在VS2010上编写了简单的应用程序,发送httpwebrequest并且没有任何配置fiddler捕获此请求。但之后,我安装了VS2012并运行了fiddler,当我发送请求时我有异常“操作超时”并且没有捕获请求。当我关闭小提琴手时,所有请求都会被发送。   我删除了VS2012和.net framework 4.5。在该请求被发送并且小提琴手捕获它们之后   为什么fiddler在安装.net4.5时无法捕获流量?

1 个答案:

答案 0 :(得分:1)

您是否有机会尝试设置HttpWebRequest的Host属性? 这可能是您遇到问题的原因。

我还安装了.NET 4.5并遇到了同样的情况。 当fiddler运行并且充当代理时,我得到相同的错误。错误是:

  

System.Net.WebException:操作已超时   System.Net.HttpWebRequest.GetResponse()

这是一个重现问题的简单示例:

using System;
using System.IO;
using System.Net;

namespace WebRequestTest
{
    class Program
    {
        static void Main(string[] args)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.microsoft.com");
            request.Host = "www.microsoft.com";//If I comment this line, capturing with fiddler works OK.
            request.Method = "GET";
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0";

            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            using (Stream stream = response.GetResponseStream())
            using (StreamReader sr = new StreamReader(stream))
            {
                string content = sr.ReadToEnd();
                Console.WriteLine(content);
            }
        }
    }
}

在我的情况下,我只需评论request.Host="www.microsoft.com"行,一切正常。

我怀疑使用fiddler以外的HTTP代理会发生同样的行为,但我还没有测试过。