C# HttpClient Post 选择正确的超时

C# HttpClient Post choosing the right Timeout

http(tcp) 请求在没有通知侦听器的情况下丢失是有效的行为。看到这里的讨论:

问题 我们正在使用 HttpClient.PostAsJsonAsync 将 Json 文件上传到服务器。但是,在最坏的情况下,此上传可能需要几个小时。 这就是为什么仅使用 HttpClient.Timeout 对我们不起作用的原因。这是一个硬超时,我们需要让它变大。

那么当 tcp 连接断开并且客户端没有检测到时我们该怎么办。由于我们的巨大超时,我们被困了很长时间。那么在这种情况下我们可以使用其他超时吗?还有其他想法或最佳做法吗? 我也在研究 tcp sockets keep alive,但这似乎不是一个选择。

经过一番研究,我终于找到了一篇描述问题并提供解决方法的文章: http://www.thomaslevesque.com/2014/01/14/tackling-timeout-issues-when-uploading-large-files-with-httpwebrequest/

根据这篇文章,我能够重现 HttpWebRequest 中的设计缺陷。似乎很荒谬,超时也会影响上传。

但是,我可以接受提供的解决方法 (WebRequestExtensions),因为我们的代码无论如何都是同步的。