关闭

解决WebClient或HttpWebRequest首次连接缓慢问题

标签: vb.net.net语言框架编程c#
138998人阅读 评论(36) 收藏 举报
分类:

【编程环境】Visual Studio 2010, NET4.0

【开发语言】C#, 理论上VB.NET等依赖.NET Framework框架的语言均受此影响

【问题描述】

使用HttpWebRequest抓取网页内容,但首次请求总是莫名奇妙的阻塞在Request.GetResponse();上,不过一旦这次请求成功,后续的操作就很快了(如果是针对同一对象)。

相同的代码编译在NET3.5环境中却一切正常,而在NET4.0环境中执行就出这问题,难道是一个BUG?

【解决方案】

在配置文件中(.config)中添加配置节:

<?xml version="1.0"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
  <system.net>
    <defaultProxy
        enabled="false"
        useDefaultCredentials="false" >
      <proxy/>
      <bypasslist/>
      <module/>
    </defaultProxy>
  </system.net>
</configuration>

【问题所在】 

.NET4.0中的默认代理是开启的,而我并没有设置!故只有等待超时后才会绕过代理,这就阻塞了.

【参考资料】

"It's not set at all in app.cong or machine.config. Hmm. If I'm reading the
MSDN docs right, the default for defaultProxy.enabled is TRUE if the element
isn't specified at all. That would be consistent with my observations.
"

http://msdn2.microsoft.com/en-us/library/kd3cf2ex(VS.80).aspx

【问题引申】

如果在其它版本的.NET环境中遇到类似问题,不妨尝试WebClient.Proxy = null;或HttpWebRequest.Proxy = null.

【总结】

问题往往出于不注意,我们要多加'小心'.

希望能帮到您!

0
0
查看评论

httpWebRequest WebClient下载慢的问题处理

.net2.0的winform客户端最常用的与服务端通信方式是通过webservice,最近在用dottrace对客户端做性能测试的时候发现,客户端程序启动以后,第一次调用某一个webservice的方法是,总是特别慢,大概需要0.8-1秒钟的时间,而接下来掉其他方法就很快了,都只需要几十毫秒。go...
  • nic7968
  • nic7968
  • 2016-01-24 01:41
  • 683

C# HttpWebRequest第一次请求很慢超时的原因

在使用HttpWebRequest建立http请求时,第一次连接的响应速度会很慢,而且还会出现请求超时的错误,这里大概有十几秒钟的等待时间,但是一旦第一次运行成功后,下面的请求页面速度就会很快了。 我发现的两种解决方法: 1.IE浏览器设置  打开IE浏览器---》工具---》I...
  • hatchgavin
  • hatchgavin
  • 2016-08-10 16:43
  • 2122

HttpClient POST 请求每次响应延迟3秒问题

最近做项目遇到一个非常奇怪的问题,当我使用HttpClient包向微信服务器发送post消息时,每一笔的处理时间都达到了3秒多钟。经过分析日志发现,每次调用execute方法 时,都需要3秒左右的时间也就是说在连接建立之后给微信发送通知居然还需要3s钟。而且根据日志,可以发现所有的发往微信服务器的...
  • liyinping12
  • liyinping12
  • 2017-09-28 15:29
  • 663

HttpClient连接超时及读取超时

HttpClient连接超时及读取超时 httpClient在执行具体http请求时候 有一个连接的时间和读取内容的时间; HttpClient连接时间 所谓连接的时候 是HttpClient发送请求的地方开始到连接上目标url主机地址的时间,理论上是距离越短越快, 线路越通畅越...
  • gcxzflgl
  • gcxzflgl
  • 2017-07-13 08:25
  • 379

解决WebClient或HttpWebRequest首次连接缓慢问题

【编程环境】Visual Studio 2010, NET4.0 【开发语言】C#, 理论上VB.NET等依赖.NET Framework框架的语言均受此影响 【问题描述】 使用HttpWebRequest抓取网页内容,但首次请求总是莫名奇妙的阻塞在Request.GetRespo...
  • gghome
  • gghome
  • 2015-12-16 15:36
  • 1308

WebClient和HttpWebRequest区别

要了解他们之间的区别,还是先看看和他们有关系的类和接口之间的继承关系吧
  • XuWei_XuWei
  • XuWei_XuWei
  • 2014-01-29 14:47
  • 4499

HttpClient发送Request请求

HttpClient httpclient = new DefaultHttpClient(); InputStreamEntity reqEntity = new InputStreamEntity(new ByteArrayInputStream(reqXML.getBytes())); ...
  • niuhea
  • niuhea
  • 2014-04-17 17:45
  • 7032

HttpClient超时设置详解

HttpClient 4.3。HttpClient这货和Lucene一样,每个版本的API都变化很大,这有点让人头疼。就好比创建一个HttpClient对象吧,每一个版本的都不一样, 3.X是这样的 ? 1 HttpClient httpClient=newDefault...
  • u011191463
  • u011191463
  • 2017-11-29 14:22
  • 1839

webrequest、httpwebrequest、webclient、HttpClient 四个类的区别?

WebClient与HttpWebRequest的区别见:http://stackoverflow.com/a/4988325 WebClient与HttpClient的区别见:WebClient versus HttpClient to consumeHTTP requests ...
  • Denghejing
  • Denghejing
  • 2017-01-18 13:40
  • 3275

用HttpWebRequest代替WebClient解决POST超时问题

WebClient 不支持超时设定,这一点太糟糕了。因此选用HttpWebRequest代替WebClient :HttpWebRequest毕竟是WebClient 的父类,因此POST起来比较麻烦。try   {  ...
  • cui55
  • cui55
  • 2006-11-09 16:38
  • 8504
    联系作者
    通过QQ与我联系(全天候7*24小时基本不在线)
    最新评论
    免责声明
    如果转载的文章侵犯了您的版权,请务必告知,我将立刻删除;
    博客所有文章允许转载,原创类不要求注明出处,随意就好;
    如果是转载的文章,建议直接转载原始来源,因为原作者极可能有更新