Pour autant que je sache, il n'y a aucun moyen de savoir que c'est spécifiquement un dépassement de délai qui s'est produit. Est-ce que je ne cherche pas au bon endroit, ou est-ce que je rate quelque chose de plus important ?
string baseAddress = "http://localhost:8080/";
var client = new HttpClient()
{
BaseAddress = new Uri(baseAddress),
Timeout = TimeSpan.FromMilliseconds(1)
};
try
{
var s = client.GetAsync("").Result;
}
catch(Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.InnerException.Message);
}
Cela revient :
Une ou plusieurs erreurs se sont produites.
Une tâche a été annulée.
3 votes
Nous pouvons upvote le problème sur GitHub : HttpClient lève l'exception TaskCanceledException en cas de dépassement de délai #20296
0 votes
Un énorme upvote pour la question. Aussi... une idée de comment faire cela sur UWP ? Son Windows.Web.HTTP.HTTPClient n'a pas de membre timeout. De plus, la méthode GetAsync n'accepte pas le jeton d'annulation...
1 votes
6 ans plus tard, il ne semble toujours pas possible de savoir si un client a dépassé le temps imparti.
4 votes
.NET 5 met enfin en œuvre un système de gestion de l'information de type "wrapped
TimeoutException
; consultez ma réponse ci-dessous pour un exemple de mise en œuvre.