C#HttpClient Post选择正确的超时

C#HttpClient Post选择正确的超时,c#,asp.net-web-api,timeout,dotnet-httpclient,C#,Asp.net Web Api,Timeout,Dotnet Httpclient,http(tcp)请求可能会在侦听器未得到通知的情况下丢失,这是一种有效的行为。有关此问题的讨论,请参见此处: 问题 我们正在使用HttpClient.PostAsJsonAsync将Json文件上载到服务器。但是,在最坏的情况下,此上载可能需要几个小时。 这就是为什么仅仅使用HttpClient.Timeout对我们不起作用。这是一个艰难的暂停,我们需要有一个巨大的暂停 那么,当tcp连接断开而客户端没有检测到时,我们该怎么办呢。由于我们的巨大超时,我们被困了很长时间。那么,在这种情况下,我

http(tcp)请求可能会在侦听器未得到通知的情况下丢失,这是一种有效的行为。有关此问题的讨论,请参见此处:

问题 我们正在使用HttpClient.PostAsJsonAsync将Json文件上载到服务器。但是,在最坏的情况下,此上载可能需要几个小时。 这就是为什么仅仅使用HttpClient.Timeout对我们不起作用。这是一个艰难的暂停,我们需要有一个巨大的暂停

那么,当tcp连接断开而客户端没有检测到时,我们该怎么办呢。由于我们的巨大超时,我们被困了很长时间。那么,在这种情况下,我们还可以使用其他超时吗?还有其他想法或最佳实践吗?
我还研究了tcp套接字保持活动,但这似乎不是一个选项

经过一些研究,我终于找到了一篇描述这个问题并提供解决方法的文章:

根据本文,我能够复制HttpWebRequest中的一个设计缺陷。似乎可笑的是,超时也会影响上传

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