解决 C# .NET WebClient WebRequest请求缓慢的问题

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

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

【问题描述】

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

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

【解决方案】

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

[html] view plaincopyprint?

  1. <?xml version="1.0"?>
  2. <configuration>
  3. <startup>
  4. <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  5. </startup>
  6. <system.net>
  7. <defaultProxy
  8. enabled="false"
  9. useDefaultCredentials="false" >
  10. <proxy/>
  11. <bypasslist/>
  12. <module/>
  13. </defaultProxy>
  14. </system.net>
  15. </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.

【总结】

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

希望能帮到您!

转载于:http://blog.csdn.net/rrrfff/article/details/6170653

时间: 2024-11-12 22:24:19

解决 C# .NET WebClient WebRequest请求缓慢的问题的相关文章

网络编程之WebClient,WebRequest和WebResponse类

一.基本的WebClient类 1.首先使用OpenRead()方法返回一个stream流对象 2.把Stream流对象转换为StreamReader对象 3.使用ReadLine()方法从数据流中以文本的方式获取数据 WebClient web = new WebClient(); Stream stream = web.OpenRead("http://www.reuters.com"); StreamReader sr = new StreamReader(stream); wh

使用Volley来写一个List列表(Valley可以解决很大一部分android请求server的问题)

先上效果图: 先写一个Volley的请求的类: public void fetchData() { String url = "http://2.novelread.sinaapp.com/framework-sae/index.php"; // String body = ""; // try { // mEntity = new StringEntity(body); // } catch (UnsupportedEncodingException e1) {

解决shiro登陆超时ajax请求跳转

使用JQueryEasyUI的时候,普通请求在shrio登陆超时的时候都可以正常跳转,而ajax请求在登陆超时的时候就不跳转,上网找了下资料,都表达的不明确,而且设置一大堆,还得写过滤器.无意中找到JQuery设置全局 AJAX 默认选项.具体代码如下! $.ajaxSetup({     complete:function(XMLHttpRequest,textStatus){           if(textStatus=="parsererror"){             

header头设置解决 “已拦截跨源请求:同源策略禁止读取位于 http://47.104.128.87/back/test/test 的远程资源。(原因:CORS 头缺少 &#39;Access-Control-Allow-Origin&#39;)。”

跨域请求错误提示如下图: 解决方法在请求的php页面添加header头: 代码如下: public function test() { //支持全域名访问,不安全,部署后需要固定限制为客户端网址 header('Access-Control-Allow-Origin:*'); //支持的http 动作 header('Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE'); //响应头 请按照自己需求添加. header('Access-Co

.Net WebRequest异步请求与WebClient异步请求

很多情况下一般会使用同步方式发出请求,直到响应后再做后续的逻辑处理等,但有时候后续的逻辑处理不依赖于请求的结果或者是可以挂起等到响应后再处理,又或者是为了解决UI"假死"的现象,这时可以使用异步请求 使用WebRequest实例中的BeginGetResponse方法异步获取响应结果,其中参数callback是委托类型,state是自定义的对象,state用于保存一些信息,在callback对应的方法中可能需要用到这些信息. 下面用一个例子说明,假设需要请求url,该url对应是一张图

c#通过webrequest请求远程http服务时出现的问题

用WebRequest和WebClient,两种方式,请求一个由http服务发布的应用,结果出现异常. 有三种,1.System.Net.WebException: 服务器提交了协议冲突. Section=ResponseStatusLine 2.System.Net.WebException: 基础连接已经关闭: 连接被意外关闭.3.System.Net.ProtocolViolationException: 无法发送具有此谓词类型的内容正文. 另外,用同样的代码,请求普通的页面没问题,返回正

【转】C# HttpWebRequest\HttpWebResponse\WebClient发送请求解析json数据

http://blog.csdn.net/kingcruel/article/details/44036871 版权声明:本文为博主原创文章,未经博主允许不得转载. [csharp] view plain copy ====================================================================================================================================== /// <su

三星Note 3 N900解决WIFI无法打开、打开缓慢、卡死、wifi密码重启不能保存等问题

准备工作 1.手机已ROOT,网上教程满天飞,这里就不讲解了. 2.安装RE管理器,用来修改文件. 打开RE管理器,找到/system/build.prop文件 编辑文件 1.长按文件,选择用文本编辑器打开 2.找到这行配置:ro.securestorage.support=true,将true,修改为false 修改后效果图: 按菜单键,选择:保存并退出,重启手机即可 以上方法可以解决wifi打开缓慢,wifi无法打开,wifi密码重启不能保存等问题, 理论所有三星Android手机通用,本人

各种编码问题产生原因以及解决办法---------响应编码,请求编码,URL编码

 响应编码 产生原因以及解决办法: 示例: 1 package cn.yzu; 2 import java.io.IOException; 3 import javax.servlet.ServletException; 4 import javax.servlet.http.HttpServlet; 5 import javax.servlet.http.HttpServletRequest; 6 import javax.servlet.http.HttpServletResponse; 7