2016-02-11 39 views
0

这是有效的行为,HTTP(tcp)请求可能会丢失,而不通知侦听器。在这里看到的是,讨论: C# httpClient (block for async call) deadlockC#HttpClient Post选择正确的超时

问题 我们正在使用HttpClient.PostAsJsonAsync上传JSON文件到服务器。但是,在最坏的情况下,这种上传可能需要几个小时。 这就是为什么只使用HttpClient.Timeout不适合我们的原因。这是一个艰难的超时时间,我们需要让它变得巨大。

那么当tcp连接结束并且客户端没有检测到时我们该怎么做。由于我们巨大的超时时间,我们长期坚持下去。那么在这种情况下是否还有其他的Timeout?任何其他想法或最佳实践? 我也在寻找tcp套接字保持活着,但这似乎并不是一个选项。

回答

0

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

根据这篇文章,有在HttpWebRequest的一个设计缺陷,我才得以重现。似乎荒谬的是,超时也会影响上传。

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