我向REST API发出了一些HTTP请求,这些请求返回了很多数据(大约100 MB)。现在,我已使用.Net Core中的HttpClientFactory
来获取数据,并且工作正常。但是令我感到困惑的是,我的时间和内部时间之间的差异来自库本身。
这是库中的示例消息:
130311.0094ms之后结束处理HTTP请求-确定
事实是:即使库已编写完所有数据(执行client.GetAsync()
方法),真正下载所有数据的时间实际上还要花费20-30秒。
我认为这里发生的情况是,库非常渴望在收到标头后立即报告,而无需等待正文被下载。
这听起来确实像是个错误,但我不确定是否是错误。也许有人对为什么会这样有更好的解释?
P.S。这是我的代码示例:
Stopwatch watch = new Stopwatch();
watch.Start();
var response = await Client.GetAsync(url);
watch.Stop();
Console.WriteLine($"Elapsed time {watch.ElapsedMilliseconds} ms");
我的日志中经过的时间比系统消息中的时间要长
我尝试使用HttpCompletionOption.ResponseContentRead
运行P.P.S,但实际上并没有改变结果,仍然有很大的差异。
答案 0 :(得分:0)
看来HttpClient
中的中间件是如何被日志框架使用的。主体的加载是出于某种原因在管道外部进行的,因此日志记录总是在收到标头之后立即进行。
此question在github上的更多详细信息。