小弟我用httpwebrequest写了一个WEB浏览程序,自己运行没有任何问题,给一些朋友和同事运行也很正常,但是有少数几个人运行的时候总是在HttpWebResponse response=(HttpWebResponse)request.GetResponse ();处出现超时异常,而在有问题的机器上通过IE访问却很正常,很是令人不解。哪位高手给解释一下原因吧,我再论坛里搜了一下,发现有几个难兄难弟,他们的帖子如下:
http://community.csdn.net/Expert/topic/3537/3537374.xml?temp=.7912256
http://community.csdn.net/Expert/topic/3140/3140325.xml?temp=.2183191
第二张帖子楼主说修复一下winsock即可,我试着找了相关资料,但是没找到,哪位能给详细解释一下?

解决方案 »

  1.   

    你可以设定超时时间长一点。HttpWebRequest loHttp = (HttpWebRequest) WebRequest.Create(lcUrl);
    loHttp.ContentType="application/x-www-form-urlencoded";
    // *** Set properties
    loHttp.Timeout = 5000;     // 10 secs
      

  2.   

    我很感兴趣。但是我不知道你具体是怎么作的,当时的运行环境。这些问题,很可能是clicnt和server对HTTP RFC没有实现好,让一方傻等,导致timeout.server的实现有,HttpWebRequest也有,据说是MS只是按照最新的那个HTTP RFC实现了HTTPWebRequest.还有网络的问题,你的程序有没有设置代理,是否有防火墙等等。前几天我用IIS作一个测试,有些WebDav的包,它也是处理的不好,netcat也傻等。
      

  3.   

    我的程序当然没有设置代理,运行环境很简单,比如说就是模拟IE访问163,就这也会出错,在网上查了下资料,说有可能是连接限制的问题,不过我打线程补丁,并且在程序中把HTTPWEBREQUEST的对一个站点连接限制改成了1000,ServicePointManager.DefaultConnectionLimit=1000;但还是没有解决问题.
    另外今天我发现了一个新问题,就是IE中设置代理会影响到HTTPWEBREQUEST,晕死了,难道HTTPWEBREQUEST使用全局代理?有没有办法可以使全局代理设置不影响到它?