【发布时间】:2026-01-18 01:35:01
【问题描述】:
我正在使用 .net HttpClient,但这可能是关于 HTTP 的更普遍的问题: 我希望允许用户通过有时缓慢且不可靠的移动连接上传大文件。 如果在 20 秒内没有开始上传,则可能存在连接问题,因此应用程序应采取适当的措施(例如,暂时放弃,稍后再试。) 但如果开始上传,可能需要几分钟才能完成。在这种情况下,我不希望超时来中断它。然后我只想在上传进度慢到爬行时放弃并抛出错误。
所以我似乎想要两个超时条件 - 初始连接超时 20 秒,上传完成超时 10 分钟(或最好是动态计算)。
有没有办法做到这一点? HttpClient.Timeout 似乎对整个上传设置了限制,而不仅仅是初始连接。
我正在使用 HttpClient.PutAsync(),并通过覆盖 HttpContent.SerializeToStreamAsync() 来监控进度。如有必要,我可以在此函数中包含一个最低速度检查,以在进度太慢时终止。
干杯。
【问题讨论】:
标签: http upload timeout dotnet-httpclient