我向 REST API 发出了一些 HTTP 请求,这些请求返回了大量数据(大约 100 MB)。我现在已经使用HttpClientFactory
.Net Core 来获取数据并且它工作正常。但是让我感到困惑的是我的时间和来自图书馆本身的内部时间之间的差异。
这是来自库的示例消息:
在 130311.0094 毫秒后结束处理 HTTP 请求 - OK
问题是:即使库已经写完所有数据,真正下载所有数据也需要 20-30 秒(执行client.GetAsync()
方法)。
我假设这里发生的事情是图书馆非常渴望在收到标题后立即报告,而无需等待正文下载。
这听起来真的像一个错误,但我不确定它是否是。也许有人对为什么会发生这种情况有更好的解释?
PS这是我的代码示例:
Stopwatch watch = new Stopwatch();
watch.Start();
var response = await Client.GetAsync(url);
watch.Stop();
Console.WriteLine($"Elapsed time {watch.ElapsedMilliseconds} ms");
我的日志中经过的时间比系统消息中的时间长得多
PPS 我试过运行,HttpCompletionOption.ResponseContentRead
但它确实没有改变结果,它仍然有很大的不同。
似乎这就是HttpClient
日志框架使用的中间件的工作方式。由于某种原因在管道之外加载主体,因此日志记录总是在收到标头后立即发生。
github上这个问题的更多细节。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句