C#的HttpWebRequest第一次请求很慢超时的原因及解决方法

在使用HttpWebRequest建立http请求时,第一次连接的响应速度会很慢,而且还会出现请求超时的错误,这里大概有十几秒钟的等待时间,但是一旦第一次运行成功后,下面的请求页面速度就会很快了。

网上查找了下,发现和我遇到同样问题的网友也有很多。

网友小A说:

“第一次用HttpWebRequest请求连接非常慢,但是只要第一次连接getresponse或者getrequeststream()成功了,后面就很快。不过只要一重新拨号,就又要很长时间才能获取getresponse()或者是getrequeststream()。
求怎么样才能解决这个问题,即使第一次慢点,但是等后面网络重拨后,可以快速的链接上,获取响应。
用循环套用他 第一次的时候超级慢,然后后面跟着很快,但是只要断开网络连接后重新连接后第一次就又很慢了。求解~~~”

网友小B说:

“今天把我以前做的一个程序升级到了.NET 4.0的版本,里面有一段通过HttpWebRequest获取html的代码,第一次运行特别慢,后续运行就快了。在网上搜了一下,找到了原因:.NET4.0中的默认代理是开启的,使用默认代理时,只有等待超时后才会绕过代理,从而导致第一次连接特别慢。(不知道微软为什么要把这个打开)”

【问题所在】

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

【参考资料】

"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;

加了上面这一句 HttpWebRequest.Proxy = null;  将其默认代理设置为空时,果然 HttpWebRequest在第一次运行时不慢了,响应速度恢复了正常。

时间: 2024-09-15 16:37:15

C#的HttpWebRequest第一次请求很慢超时的原因及解决方法的相关文章

SQL数据库连接超时的原因与解决方法

1.由于数据库设计问题造成SQL数据库新增数据时超时 症状: A. Microsoft OLE DB Provider for SQL Server 错误 '80040e31' [ODBC SQL Server Driver]超时已过期) B.服务器上看CPU.内存占用率很低: C.事件日志中提示: 数据库 '*********' 中文件 '***********' 的自动增长在 453 毫秒后已取消或出现超时.使用 ALTER DATABASE 设置更小的 FILEGROWTH 或设置新的大小

分析网站第一次的被K的主要原因和解决方法

本人的小站刚刚因为修改文章标题而被百度降权,所以写一些心得与大家分享,并给自己做一个简单的回顾.不幸的是,好景不长,发表文章后没几天,发现自己将近200的页面竟然被百度K得只剩下了个首页,反链同样大减,从689降到了120,让我悲痛不已.不过我痛定思痛,思考自己是哪点儿做错了,当时的结论是这样的: 一.修改了关键词和描述.被K之前,我改动了关键词和描述,多加了一个"计算机基础知识".当时觉得小刀一下二者,被百度处理肯定是正常的,但应该不会太严重.回头再想,之前还改过标题,才觉得很可能正

ie发送ajax请求返回上一次结果的解决方法

 这篇文章主要介绍了ie发送ajax请求返回上一次结果的解决方法,需要的朋友可以参考下 问题出现原因:    1. ie下面只会建立一次 ajax 请求,将响应结果放在浏览器缓存里 下次调用该ajax请求时 从缓存里读取    get方式时,获取数据,因发送参数和地址都一致,故IE浏览器会从缓存中取,而不会去请求服务器端,而post方式因为参数的不同,不会产生这个问题    2. 火狐下面 每次激活事件 都会重新建立一次ajax请求    解决方法:    1: 在AJAX请求的页面后加个随机函

win7登录不上qq显示登录超时的两种解决方法

  win7登录不上qq显示登录超时的两种解决方法 1.检查下防火墙设置.方法是进入控制面板,点击系统和安全,点击Windows防火墙; 2.双击开后点击左侧的打开或关闭防火墙这一项; 3.在家庭和工作网络位置和公共网络位置选项下全部选择关闭防火墙.设置完后运行QQ试试. 解决方法二: 1.打开QQ登录界面,点击右上角的设置; 2.点开后进入高级设置,这里可以看到可进行网络类型设置和登录服务器类型设置; 3.先进行网络类型设置,如果以前使用代理,现在选不使用代理,如果不使用代理也不行,选择使用浏

电脑运行很慢是什么原因?怎么解决?

  在使用电脑的日常生活中,我们经常会遇到电脑运行缓慢的情况,这个其实是电脑后台运行了太多或者太大的程序造成,那么那么电脑运行很慢是什么原因?怎么解决?下面小编就为大家介绍一下,一起来看看吧! 方法/步骤 1.首先电脑死机我们第一步先按键盘组合键"Ctrl+Alt+Del",调出"Windows任务管理器" 2.选择"进程"选项卡 3.点击以下"进程"窗口中的"内存使用",点一下是升序排列,再点一下是降序排

Android编程向服务器发送请求时出现中文乱码问题的解决方法_Android

本文实例讲述了Android编程向服务器发送请求时出现中文乱码问题的解决方法.分享给大家供大家参考,具体如下: 我们在andorid项目中通过get方式向服务器发送请求,其中url参数带有中文,将会产生乱码,乱码产生的原因有两种: 1. 在提交参数时,没有对中文参数进行URL编码 2. Tomcat服务器默认采用的是IOS8859-1编码(不支持中文)得到参数值 解决: 1. 进入android项目,在其中要提交参数的时候,对参数的值进行编码: 复制代码 代码如下: URLEncoder.enc

jquery ajax多次请求数据时 不刷新问题的解决方法

jquery的ajax在频繁请求数据,或者重复请求数据的时候出现了一个情况,那就是非ie浏览器正常,ie浏览器会设置缓存,导致第二次请求的时候不会刷新,系统报304 not modify, 解决方案: jquery的ajax方法提供配置参数:cache,(只需将属性设置为false即可) 详细: cache:Boolean 默认: true, dataType为"script"和"jsonp"时默认为false如果设置为 false ,浏览器将不缓存此页面. 以上就

ie发送ajax请求返回上一次结果的解决方法_AJAX相关

问题出现原因: 1. ie下面只会建立一次 ajax 请求,将响应结果放在浏览器缓存里 下次调用该ajax请求时 从缓存里读取 get方式时,获取数据,因发送参数和地址都一致,故IE浏览器会从缓存中取,而不会去请求服务器端,而post方式因为参数的不同,不会产生这个问题 2. 火狐下面 每次激活事件 都会重新建立一次ajax请求 解决方法: 1: 在AJAX请求的页面后加个随机函数,我们可以使用随机时间函数 在javascript发送的URL后加上t=Math.random() 例如这样:URL

node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法_node.js

发现错误 最近在用Nodejs发送https请求时候,出现\"Error: UNABLE_TO_VERIFY_LEAF_SIGNATURE\"的错误,错误如下: events.js:72 throw er; // Unhandled \'error\' event ^ Error: UNABLE_TO_VERIFY_LEAF_SIGNATURE at SecurePair. (tls.js:1381:32) at SecurePair.emit (events.js:92:17) at