3

如前所述, 为什么这个 WebRequest 代码很慢?这里是 64 位 Windows 上的 HttpWebRequest GetResponse 延迟

由于代理自动检测,HttpWebRequest 在第一个请求时挂起。一个解决方法是设置Proxy = null,但这也锁定了所有使用代理的用户,这不是一个合适的解决方案

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

4

4 回答 4

1

您可以先尝试/捕获呼叫,并将代理设置为 null 并在失败情况下设置代理自动检测。

于 2013-03-17T23:53:14.003 回答
1

http://localhost:9200当使用 GetResponse 和 GetRequestStream 发出第一个请求并且有 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

在此之前,我尝试了许多通过 Internet 找到的解决方案,但对我的情况没有任何帮助,例如:

  1. request.Proxy = null;
  2. ServicePointManager.UseNagleAlgorithm = false
  3. web.config 中的各种变化...
于 2013-10-07T14:25:56.103 回答
0

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

于 2013-03-17T19:34:53.013 回答
0

帮助我的事情是关闭 Internet Explorer LAN 设置中的“自动检测设置”。没有其他工作,包括重写代码以使用 HttpClient 而不是 HttpWebRequest。

于 2018-09-15T07:13:24.903 回答