lakers009 发表于 2015-5-16 09:00:47

解决Win7中HttpWebRequest连接缓慢、超时等问题

  一、测试环境
  机器A:Windows7 简体中文旗舰版,已安装.net framework2.0和4.0
  机器B:Windowsxp 英文专业版,已安装.net framework2.0和4.0
  机器C:Windowsxp 简体中文专业版,只安装了.net framework2.0
  程序是基于.net framework2.0写的
  
  二、测试代码
  


            string result;
            try
            {
                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
                CookieContainer cookieContainer = new CookieContainer();
                httpWebRequest.CookieContainer = cookieContainer;
                httpWebRequest.Timeout = 5000;
                Stream responseStream = httpWebRequest.GetResponse().GetResponseStream();
                StreamReader streamReader = new StreamReader(responseStream, Encoding.GetEncoding(encode));
                result = streamReader.ReadToEnd();
            }
            catch (Exception ex)
            {
                result = ex.ToString();
            }
            return result;  
  三、问题
  很简单的一段代码,很久以前写的了,这天又拿出来用,却发现不能用了,总是抛异常(请求超时),试了好多不同的url都是一样,还以为是没写UserAgent或者UserAgent写的有问题,抓了个浏览器的包,把浏览器的UserAgent拷出来再试,也不行。把以前可以用的程序直接拿出来跑,也是一样。左思右想,代码一直没人动,变了的是操作系统由以前的window xp变成了现在的windows 7(机器A),立即拿到windows xp虚拟机(机器C)里去跑跑试试,直接从Debug里把文件拷过去,一跑可以用。由于windows xp虚拟机(机器C)只装了.net framework2.0,是不是.net framework4.0影响的呢?第二天直接拿到公司电脑(机器B)也可以用。
  不能这么杯具吧?难道windows7就不行了吗?Microsoft不想让大家用HttpWebRequest了?
  
  四、解决
  经过几天在网上搜索,终于找到了一个和我差不多的问题,并给出了解决方法,不过他说是.net framework4.0,而我的是在windows7上就出问题。
  最终根据给出的解决方法分析,可能是和系统不同的“默认代理和用户验证策略”有关。大家有知道准确原因的请指教。
  解决方法如下:在app.config里加入以下代码,原来的代码C#代码无需修改
  


   
      
         
         
         
      
     
  五、参考
  http://msdn2.microsoft.com/en-us/library/kd3cf2ex(VS.80).aspx
  
页: [1]
查看完整版本: 解决Win7中HttpWebRequest连接缓慢、超时等问题