在第一次请求时正确修复HttpWebRequest GetResponse延迟

时间:2013-03-17 19:29:37

标签: c# .net proxy httpwebrequest httpwebresponse

如前所述 Why is this WebRequest code slow?HttpWebRequest GetResponse delay on 64bit Windows

由于代理自动检测,HttpWebRequest在第一个请求时挂起。修复方法是设置代理= null ,但这也会锁定使用代理的所有用户,并且不是正确的解决方案

那么,是否有人知道如何在不锁定所有代理用户的情况下以编程方式修复此初始延迟?

3 个答案:

答案 0 :(得分:1)

您可以先尝试/ catch调用,将代理设置为null,并在失败的情况下使用set proxy autodetection。

答案 1 :(得分:0)

一种方法是要求用户在Internet Explorer选项中关闭代理自动检测。

答案 2 :(得分:0)

我在使用GetResponse和GetRequestStream在http://localhost:9200发出第一个请求并且延迟时间为20秒时,从ASP.NET(C#)调用Elasticsearch时遇到了类似的问题。

我的问题的原因是在IPv6内。 我的案例的解决方案是注释localhost的IPv6地址定义:

转到“C:\ Windows \ system32 \ drivers \ etc \”文件夹

备份“主机”文件

编辑文件以更改行:

::1 localhost

#::1 localhost

你也可以改行:

#127.0.0.1 localhost

127.0.0.1 localhost

也许你可以刷新DNS缓存: 以管理员身份启动命令提示符,在命令窗口中键入,然后按Enter键: ipconfig / flushdns

在此之前我尝试了很多我在互联网上找到的解决方案,但对我的情况没什么帮助,例如:

  1. request.Proxy = null;
  2. ServicePointManager.UseNagleAlgorithm = false
  3. web.config中的各种更改......