J'essaie d'appeler la méthode PostaSync à l'aide du système.net.http.httpclient à partir de l'API Web. Je reçois l'erreur suivante:
System.AccrégationException "Une tâche a été annulée" P> blockQuote>
tâche: p>
ID = 1, Status = System.threading.Tasks.TaskStatus.canalled, méthode = "{null}", résultat = "{pas encore calculé}" p> blockquote>
code: p>
xxx pré> i suppose que le responsable de la responsabilité forcera la méthode à exécuter de manière synchrone? p>
C'est une application WPF, pas ASP .NET. P> P>
3 Réponses :
non synchrone, la seconde tâche sera également exécutée d'ASYNC mais enchaînée avec la première tâche, donc seulement après la première tâche exécutée. p>
semble être la première tâche - PostaSync a été exécuté avec une erreur. Essayez d'attraper des exceptions agrégées TPL et de trouver plus de détails dans la collection d'exceptions internes à partir de AggregateException code>
Par exemple, comme ici ou abonnez-vous à
Taskscheduler.unobservaServedTasception code> et logez-vous toutes vos exceptions p>
En termes de débogage, vous pouvez essayer d'écrire une méthode d'extension pour obtenir l'exception:
public static HttpResponseMessage PostAsyncSafe(this HttpClient client, string requestUri, string content) { var requestContent = new StringContent(content, Encoding.UTF8, "application/x-www-form-urlencoded"); return PerformActionSafe(() => (client.PostAsync(requestUri, requestContent)).Result); } public static HttpResponseMessage PerformActionSafe(Func<HttpResponseMessage> action) { try { return action(); } catch (AggregateException aex) { Exception firstException = null; if (aex.InnerExceptions != null && aex.InnerExceptions.Any()) { firstException = aex.InnerExceptions.First(); if (firstException.InnerException != null) firstException = firstException.InnerException; } var response = new HttpResponseMessage(HttpStatusCode.InternalServerError) { Content = new StringContent(firstException != null ? firstException.ToString() : "Encountered an AggreggateException without any inner exceptions") }; return response; } }
Truc de débogage Travaillé comme un charme, j'ai détecté mon logiciel AV me donne un temps difficile avec les certificats HTTPS et le réseau de bureau a un problème avec les demandes d'azur!
Je reçois cette même erreur et je l'ai suivi à mon httpClient chronométrant. Le délai d'attente par défaut est de 100 secondes. J'ai ajouté ce qui suit à la création du httpclient.
p> p> code> p>