因此,可以在HttpClient上设置两个超时属性:HttpClient.TimeOut和WebRequestHandler.ReadWriteTimeout.
第一个是整个请求/响应的超时,所以如果下载/上传时间超过这个,我运气不好,在转移过程中被切断,没有问题.显然可以通过将超时设置为无限来覆盖,但我不确定它会产生什么后果.
现在后者(ReadWriteTimeOut) - 至少根据我的理解 - 应该一直传播到NetworkStream,它会影响请求/响应流在超时之前阻塞(空闲)的时间.
HttpClient的是使用的异步版本HttpWebRequest的方法,但指出在这里:
在异步请求的情况下,客户端应用程序负责实现其自己的超时机制.
它根本没有解释它们有哪些超时机制(网络流空闲超时?整个HTTP GET的超时等等),这让我非常困惑.
所以我的问题是,HttpClient究竟如何处理网络/协议超时?我想使用HttpClient上传/下载可能很大的文件,所以为此我将HttpClient.TimeOut设置为无限.但我担心,通过这样做,应用程序有可能无限期地等待服务器/网络拒绝完成的某些事件.