Hallo i Httpclient ähnlich wie diese bin mit:Httpclient - Umgang mit aggregierten Ausnahmen
public static Task<string> AsyncStringRequest(string url, string contentType)
{
try
{
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue(contentType));
return client.GetStringAsync(url).ContinueWith(task => {
return task.Result;
});
}
catch (AggregateException ex)
{
throw ex;
}
catch (WebException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
}
Aber ich Schwierigkeiten habe mit Ausnahmen zu tun. Ich habe die zusätzlichen catch-Blöcke hinzugefügt, nur um zu versuchen und zu werfen, aber keiner der Break-Punkte wird in irgendeinem der catch-Blöcke gefangen. Ich realisiere die Verwendung von Task die Ausnahme könnte in einem anderen Thread als der Aufrufer auftreten, so dass die Ausnahme in einen Aggregat-Container gewickelt ist, aber ich bin mir nicht sicher, was der beste Weg, um mit diesen Ausnahmen umzugehen ist.
Zum Beispiel ich mache eine Anfrage an einen Web-Service und spezifischen einen ungültigen Parameter in der Anforderung, und eine Ausnahme ausgelöst wird. Ich möchte, dass ich in der Lage bin, die Aggregatausnahmen zu erfassen und die Unerfahrenheiten zu untersuchen, um herauszufinden, warum die Anfrage fehlgeschlagen ist, und eine freundliche Nachricht zurückzugeben.
Also meine Frage ist, was ist der beste Weg, um diese Summe Ausnahmen und mit ihnen umgehen zu fangen?
Toll, ich werde es in der nächsten Stunde ausprobieren! – gdp
Ich weiß, dass dies eine alte Frage ist, aber gibt es eine Möglichkeit, den HTTP-Statuscode von der aggregateexception abzurufen, wie es bei einer Webexception möglich ist? – gdp
@gdp: Ja, Sie können die .Flatten für die AggregateException aufrufen und dann auf die InnerExceptions-Eigenschaft zugreifen und die darin enthaltene WebException abrufen. –