.Net Core下HttpClient速度慢的坑及跳坑指南

.NET
1086
0
0
2022-06-30
标签   .NET Core

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秒:

.Net Core下HttpClient速度慢的坑及跳坑指南

耗用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);

这样运行结果就正常了:

.Net Core下HttpClient速度慢的坑及跳坑指南

耗用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