【问题标题】:C# HttpClient Post choosing the right TimeoutC# HttpClient Post 选择正确的超时
【发布时间】:2016-02-11 18:36:45
【问题描述】:

http(tcp) 请求可能会在没有通知侦听器的情况下丢失是有效的行为。看到这里的讨论: C# httpClient (block for async call) deadlock

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

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

【问题讨论】:

    标签: c# asp.net-web-api timeout dotnet-httpclient


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      • 1970-01-01
      相关资源
      最近更新 更多