• 解决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#代码无需修改

     <system.net>   
        <defaultProxy   
            
    enabled="false"   
            useDefaultCredentials
    ="false" >   
          <proxy/>   
          <bypasslist/>   
          <module/>   
        </defaultProxy>   
      </system.net> 

    五、参考

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

  • 相关阅读:
    android.os.NetworkOnMainThreadException的解决方案
    一些LinuxC的小知识点(一)
    一些LinuxC的小知识点(二)
    <assert.h>库学习
    <string.h>的学习
    Java异常的中断和恢复
    Java Collection或Map的同步
    Java经典实例:按字符颠倒字符串
    Java 经典实例: Unicode字符和String之间的转换
    Java经典实例:处理单个字符串
  • 原文地址:https://www.cnblogs.com/llcto/p/2255263.html
Copyright © 2020-2023  润新知