摘要: HttpClient是否有默认并发数限制?在.Net 4.0之前,一直是依靠HttpWebRequest实现Http操作的。它默认有一个非常保守的同一站点下最大2并发数限制,导致默认情况下HttpWebRequest往往得不到理想的速度(估计这个策略郁闷了不少码农),必须修改App.config或ServicePointManager.DefaultConnectionLimit的值。MS在.Net 4.5中引入了一个HttpClient类专门处理Http操作,本来我以为HttpClient和HttpWebRequest遵循一样的策略的。今天在写一个多线程下载的程序的时候,用到了10个并发连接 阅读全文
posted @ 2013-04-26 17:16 summer0311 阅读(12438) 评论(3) 推荐(3) 编辑
摘要: 【问题】C#中,提交对应的POST类型http请求之前,会执行:Stream postDataStream = req.GetRequestStream();然后填充对应的post数据,再提交http的请求。但是调试的时候,发现每次执行GetRequestStream都很慢。慢也就算了,结果最近发现,某次,执行req.GetRequestStream();死掉。【解决过程】1.网上找了找,根据GetRequestStream的效率为什么这么低?的解释,说是.NET每次会自动搜索代理,所以很慢,此处没有设置代理的话,应该直接复制为空:req.Proxy = null;然后再去执行GetReque 阅读全文
posted @ 2013-04-26 17:09 summer0311 阅读(10841) 评论(0) 推荐(2) 编辑
摘要: 【问题】用C#模拟网页登陆,其中去请求几个页面,会发起对应的http的请求request,其中keepAlive设置为true,提交请求后,然后会有对应的response:resp = (HttpWebResponse)req.GetResponse();之前的多次调试,一直都是可以正常获得对应的response,然后读取html页面的。但是后来几次的调试,在没有改变代码的前提下,结果GetResponse却始终会超时死掉。【解决过程】1.默认request的timeout是1000000毫秒=100秒,都会超时,手动改为10秒,因此就更容易超时了,无法解决问题。2.将http的request 阅读全文
posted @ 2013-04-26 17:07 summer0311 阅读(8116) 评论(2) 推荐(8) 编辑