HttpClient是否有默认并发数限制
1个回答
推荐于2018-05-06
展开全部
在.Net 4.0之前,一直是依靠HttpWebRequest实现Http操作的。它默认有一个非常保守的同一站点下最大2并发数限制,导致默认情况下HttpWebRequest往往得不到理想的速度(估计这个策略郁闷了不少码农),必须修改App.config或ServicePointManager.DefaultConnectionLimit的值。
MS在.Net 4.5中引入了一个HttpClient类专门宴掘败处理Http操作,本来我以为HttpClient和HttpWebRequest遵循一样的策略的。今天在写一个多线程下载的程序的时候,用到了10个并发连接,发现在默认的情况下,HttpClient并没有并发数限制。
最初我以为是.Net 4.5取消了这个并发数限制(毕竟现在基本上没有谁遵循这个标准了),然后用WebRequest重写了相关代码,发现依然是2并发上限,并且ServicePointManager.DefaultConnectionLimit的值也是2。也就是说:HttpClient不受HttpWebRequest并发策略控制,也没有系统级的并发限制。
另外,测试的时候发现,HttpWebRequest默认也不是对所有地址都2并发上限散禅的。例如,对本地的http地址连接晌颤(http localhost/*)就没有并发限制。
MS在.Net 4.5中引入了一个HttpClient类专门宴掘败处理Http操作,本来我以为HttpClient和HttpWebRequest遵循一样的策略的。今天在写一个多线程下载的程序的时候,用到了10个并发连接,发现在默认的情况下,HttpClient并没有并发数限制。
最初我以为是.Net 4.5取消了这个并发数限制(毕竟现在基本上没有谁遵循这个标准了),然后用WebRequest重写了相关代码,发现依然是2并发上限,并且ServicePointManager.DefaultConnectionLimit的值也是2。也就是说:HttpClient不受HttpWebRequest并发策略控制,也没有系统级的并发限制。
另外,测试的时候发现,HttpWebRequest默认也不是对所有地址都2并发上限散禅的。例如,对本地的http地址连接晌颤(http localhost/*)就没有并发限制。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询