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

HttpWebRequest 类对 WebRequest 中定义的属性和方法提供支持,也对使用户能够直接与使用 HTTP 的服务器交互的附加属性和方法提供支持。

在使用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在第一次运行时不慢了,响应速度恢复了正常。

分类:默认分类 时间:2012-01-08 人气:58
本文关键词:
分享到:

相关文章

  • 基于HttpWebRequest和HttpWebResponse的HttpHelper 2014-01-09

    C#中实现POST的方法很多,常用的是WebBrowser、WebClient、HttpWebRequest和HttpWebResponse 1、WebBrowser基本是在DocumentCompleted中分析HtmlDocument ; 2、WebClient是对HttpWebRequest和HttpWebResponse的封装,用起来更方便,但是灵活性还是不及HttpWebRequest和HttpWebResponse; 3、HttpWebRequest和HttpWebResponse更

  • WP7开发之HttpWebRequest基本的GET请求 2014-08-15

    文章介绍一款手机开发的教程关于WP7开发之HttpWebRequest基本的GET请求 有需要了解的朋友可以参考一下。 一、预备知识: 什么是Get请求?什么是Url?请直接Baidu,Google,Bing。 二、WP7的网络操作:非阻塞的异步操作(暂时还没有看到直接的同步的操作的方式)。 三、主要代码: 代码如下 复制代码 public class Http { public delegate void HandleResult(string result); private HandleR

  • 基于HttpWebRequest的通用请求和响应处理 2014-09-17

    使用HttpWebRequest和HttpWebResponse在后台进行文件的提交,可以替代使用前台form提交的方式,HttpWebRequest用来测试某网页的速度是500多毫秒,而IE速度很快只有不到100毫秒,如何才能提高HttpWebRequest的响应速度? ------解决方案-------------------------------------------------------- 看看服务器是否支持压缩,如果服务器支持压缩可能是因为IE接收的是压缩数据,你的程序时接收未压

  • C#开发微信门户及应用(26)-公众号微信素材管理 2012-02-05

    微信公众号最新修改了素材的管理模式,提供了两类素材的管理:临时素材和永久素材的管理,原先的素材管理就是临时素材管理,永久素材可以永久保留在微信服务器上,微信素材可以在上传后,进行图片文件或者图文消息的发送,关注的公众号可以在素材有效期内查看相关的资源,对于永久素材,那就不会存在过期的问题,只是纯粹数量上限的限制。本文综合两方面进行介绍素材管理的各种接口和实现。 1、素材类型和功能点 关于素材的官方说明: 临时素材: 公众号经常有需要用到一些临时性的多媒体素材的场景,例如在使用接口特别是发送消息时

  • WP7应用开发笔记 继承BitmapSource并使用独立存储来缓存远程的图片 2012-03-27

    作为Web App访问远程图片是经常的遇到功能,Wp本身提供了Image 很好的支持通过图片的Uri显示图片 public ImageSource Source { get; set; } <Image Source="" /> 为了减少网络流量,需要将图片缓存到本地数据存储中。复习一下WP的本地数据存储: Windows Phone 本地数据存储 Windows Phone 应用程序可以使用独立存储将数据储存到手机本地。应用程序可以通过三种方式储存数据: 1. 设置:使用 Isol

  • Web安全实践(15)CSRF(跨站请求伪造)-从校内的插入图片说起 2012-05-13

    15.1 从校内说起 (一)简单效果 话说校内网目前俨然是中国第一大学生社交网站了,它的安全性也是从最初的一塌糊涂越变越好。客户端验证也从最初可以添加任意代码(html,css,script)到现在的只允许css,而且过滤了关键字,进行服务器端验证。。。使用校内的过程中真的学到了不少知识。偶尔在校内写写日志,难免会注意它的编辑器。 这就是编辑器的全部功能。它不允许查看源代码,当然这不是问题,因为我们知道日志的呈现结果必须是html代码的。随便找个在线编辑器就可以编辑了,然后把编辑后的内容贴过来就

  • async.await在ASP.NET中线程死锁的解决方法 2012-07-16

    C# 5.0中引入了async 和 await。这两个关键字可以让你更方便的按照同步的方式写出异步代码。也就是说使你更方便的异步编程。 下面演示使用async,await的方式: 第一步:将 VS2010 升级到 VS2010 sp1. 第二步:下载Async CTP,进行安装 第三步:为应用程序添加AsyncCTPLibrary引用,如下: OK,将上面的SumPageSizes 方法修改如下: public async Task<int> SumPageSizesAsync2(I

  • Post请求Json格式数据到WCF服务 2012-08-16

    json因为其短小精湛,兼容性强,所以很多平台都喜欢用它来做数据交互,本文我们来看看一个用Json格式来发送一个Post请求到WCF服务的实例。 测试实体类:(需要在客户端和服务端建了有相同字段名称的实体) public class CompositeType { public CompositeType() { SubCompositeTypes = new List<SubCompositeType>() { new SubCompositeType() }; } public

  • .net mvc 微信开发笔记(五)------JSON解析,自定义菜单 2012-08-31

    开发者与微信服务器的通信过程: 一.微信主动发送给开发者信息 二.开发者主动发送给微信信息 上一节简单介绍了第一部分,现在来讨论第二部分。 这里主要涉及到JSON数据的解析和发送,以"自定义菜单创建接口"为例 我们观察这个api: POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN 首先要获得ACCESS_TOKEN,这就要用到”获取access_token"接口了。 G

Copyright (C) quwantang.com, All Rights Reserved.

趣玩堂 版权所有 京ICP备15002868号

processed in 0.087 (s). 11 q(s)