C# HttpWebRequest在Fiddler运行时工作得更快

C# HttpWebRequest在Fiddler运行时工作得更快,c#,http,httpwebrequest,fiddler,C#,Http,Httpwebrequest,Fiddler,我做了一些测试,向 在fiddler运行时,每个请求的平均响应时间为0.02s 如果不运行fiddler,平均响应时间为0.9秒预请求 巨大的差异 var watch = Stopwatch.StartNew(); var wrGeturl = (HttpWebRequest)WebRequest.Create(new Uri("http://www.google.com")); wrGeturl.KeepAlive = t

我做了一些测试,向

在fiddler运行时,每个请求的平均响应时间为0.02s

如果不运行fiddler,平均响应时间为0.9秒预请求

巨大的差异

            var watch = Stopwatch.StartNew();
            var wrGeturl = (HttpWebRequest)WebRequest.Create(new Uri("http://www.google.com"));
            wrGeturl.KeepAlive = true;
            wrGeturl.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate,sdch");
            wrGeturl.Headers.Add(HttpRequestHeader.AcceptCharset, "ISO-8859-1,utf-8;q=0.7,*;q=0.3");
            wrGeturl.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
            wrGeturl.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            using (var reqStream = wrGeturl.GetResponse().GetResponseStream())
            {
                if (reqStream != null)
                {
                    var webPage = new StreamReader(reqStream).ReadToEnd();
                }
            }

            Console.WriteLine("Time: " + watch.Elapsed.TotalSeconds);
这是一个非常基本的代码,没有任何逻辑,所以我不明白

我查看了其他帖子,发现我必须将KeepAlive属性设置为TRUE,我已经这样做了,但没有任何变化


你知道这个奇怪的问题是什么吗?

你试过将代理设置为空吗?是的,没有任何改变。你是在循环中发出这些请求,还是只发出一次?如果在循环中,每个请求的速度有多快?这种结果最常见的来源是
保持活动的失败
,但看起来您已经正确地启用了该功能,并且正确地处理了GetResponseStream返回的对象。您是否查阅过System.Net日志或WireShark/Netmon以查看是否正在重新使用连接?