When you execute SendAsync , the HttpClient.Timeout is placed in the CancellationTokenSource . This means that this timeout is for the entire async operation.
On the other hand, WebRequestHandler.ReadWriteTimeout copied to HttpWebRequest , where it is set in the request stream of both ReadTimeout and WriteTimeout . So this is more of a thread level timeout, which is ultimately a socket level timeout.
If you set both parameters, then if the operation takes longer than HttpClient.Timeout , then it will be a timeout, and if reading or writing from the stream takes longer than WebRequestHandler.ReadWriteTimeout , this will also lead to a timeout. Although I'm not sure if there is a difference in latency exceptions.
weston
source share