Ciao io sto usando HttpClient simile a questo:HttpClient - si tratta di eccezioni aggregati
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;
}
}
Ma io sto avendo difficoltà che fare con le eccezioni. Ho aggiunto i blocchi di cattura aggiuntivi solo per provare e lanciare il lancio, ma nessuno dei punti di interruzione viene catturato in nessuno dei blocchi di cattura. Mi rendo conto che usando Task l'eccezione potrebbe verificarsi su un thread diverso dal chiamante in modo che l'eccezione sia racchiusa in un contenitore aggregato, ma non sono sicuro di quale sia il modo migliore per gestire queste eccezioni.
Ad esempio, faccio richiesta a un servizio Web e specifica un parametro non valido nella richiesta e viene generata un'eccezione. Voglio essere in grado di cogliere le eccezioni aggregate e osservare le intolleranze per capire perché la richiesta ha fallito e restituire un messaggio amichevole.
Quindi la mia domanda è: qual è il modo migliore per cogliere queste eccezioni aggregate e gestirle?
Grande, lo proverò nella prossima ora! – gdp
So che questa è una vecchia domanda, ma esiste un modo per ottenere il codice di stato http dall'eccezione cumulativa, come quando si rileva una scossa web? – gdp
@gdp: Sì, è possibile chiamare .Flatten su AggregateException e quindi accedere alla proprietà InnerExceptions ed estrarre la WebException contenuta al suo interno. –