gpt4 book ai didi

HttpClient - 大型上传的两次超时

转载 作者:可可西里 更新时间:2023-11-01 16:43:13 26 4
gpt4 key购买 nike

我正在使用 .net HttpClient 但这可能是一个关于 HTTP 的更普遍的问题:我想允许用户通过有时缓慢且不可靠的移动连接上传大文件。如果上传没有在 20 秒内开始,则可能存在连接问题,因此应用程序应采取适当的措施(例如暂时放弃,稍后再试)。但如果开始上传,可能需要几分钟才能完成。在这种情况下,我不希望超时中断它。然后,如果上传进度慢到爬行速度,我只想放弃并抛出错误。

所以我似乎想要两个超时条件 - 初始连接超时 20 秒,上传完成超时 10 分钟(或最好是动态计算)。

有没有办法做到这一点? HttpClient.Timeout 似乎对整个上传设置了限制,而不仅仅是初始连接。

我正在使用 HttpClient.PutAsync(),并且我正在通过覆盖 HttpContent.SerializeToStreamAsync() 来监视进度。如有必要,我可以在此函数中加入最低速度检查,以在进度太慢时终止。

干杯。

最佳答案

HttpClient 上的超时对您没有用处。据我所知,无法区分连接时间范围和发送请求正文。

您最好的选择是按照您的建议创建您自己的派生 HttpContent,或者使用 PushStreamContent。这样您就可以监控发送进度。

假设您的服务器没有返回连接:关闭,您可以使用打开 TCP 连接的 HEAD 请求访问服务器,然后您的第二个请求可以是 PUT,它将重新使用 TCP 连接。至少这样您就知道服务器可用。

关于HttpClient - 大型上传的两次超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21395087/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com