WebClient、HttpWebRequest API太老旧,在.net core下已经不推荐使用了,在.net core要使用HttpClient。
其实HttpClient在.net framework下也有,下面的代码:
Stopwatch sw = new Stopwatch(); | |
sw.Start(); | |
using (HttpClient httpclient = new HttpClient()) | |
{ | |
for(int i=0;i<50;i++) | |
{ | |
var html = httpclient.GetAsync("http://www.rupeng.com").Result; | |
} | |
} | |
sw.Stop(); | |
Console.WriteLine("耗时:"+sw.Elapsed); |
在.net framework下运行需要12秒。但是放到.net core下运行竟然耗用了102秒:
耗用102秒
经过研究发现,.net core下的HttpClient默认会检测计算机的代理设置,所以很慢,只要禁用UseProxy就可以了。
Stopwatch sw = new Stopwatch(); | |
sw.Start(); | |
HttpClientHandler handler = new HttpClientHandler(); | |
handler.UseProxy = false;//不加这个会非常慢 | |
using (HttpClient httpclient = new HttpClient(handler)) | |
{ | |
for(int i=0;i<50;i++) | |
{ | |
var html = httpclient.GetAsync("http://www.rupeng.com").Result; | |
} | |
} | |
sw.Stop(); | |
Console.WriteLine(sw.Elapsed); |
这样运行结果就正常了:
耗用11秒
如鹏网培训班内部的聊天工具中由于要和OpenAPI服务器以及聊天云服务器走Http通讯,一开始没有设置UseProxy = false,获取历史消息、登录等操作特别卡,有时候要卡一分多钟,进行这样一个简单设置之后就速度很快了。
我搞的两个开源项目也同步修复了这个问题:
1)融云聊天 .net core
SDK:https://github.com/yangzhongke/rongim.server.netcore
2)又拍云 .net core
SDK:https://github.com/yangzhongke/UpYun.NETCore