I'm trying to set a default timeout for my HttpClient calls to 5 seconds.
I've done this via CancellationTokenSource
.
Here's the pertinent bit of code:
var cancellationToken = new CancellationTokenSource();
cancellationToken.CancelAfter(TimeSpan.FromSeconds(5));
var result = _httpClient.SendAsync(request, cancellationToken.Token);
Works as i expected in terms of the calling code getting a "Task was cancelled" error (i tested in a .NET 4.7 console app), but i noticed in Fiddler the request was still running for 1 minute, until it finally gave up:
Can someone explain this behaviour?
I would expect the underlying request to also get cancelled when the cancellation is triggered.
_httpClient
is instantiated like: new HttpClient { BaseAddress = baseAddress }
I know there's the the Timeout
setting, but not sure if I should be using that or cancellation tokens? My guess is Timeout
is for the non-async/await cases?