我向 REST API 发出一些 HTTP 请求,返回大量数据(大约 100 MB)。我现在使用HttpClientFactory
.Net Core 来获取数据,它工作正常。但令我困惑的是,我的时间安排与图书馆本身的内部时间安排之间存在差异。
这是来自库的示例消息:
在 130311.0094ms 后结束处理 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
但它确实没有改变结果,它仍然有很大的不同。