HttpClient cancellation doesn't kill underlying TCP call
As Damien said in the comments, HttpClient
re-uses connections as much as possible, hence the reason why the connection is not closed on cancel.
When canceling a request like that, the HttpClient
will just stop sending/receiving data to/from the other end. It will not send anything to inform the other end that it was cancelled. So the timeout you see of 1 minute depends on the behavior of the other end of your connection.
Also, if you want to cancel each request after 5 seconds, you can as well set the Timeout
property of _httpClient
to TimeSpan.FromSeconds(5)
. The behavior will be exactly the same (a TaskCanceledException
will be thrown if the other end doesn't respond within 5 seconds).