Problema:Gestione delle eccezioni in ASP.NET Web Api 2
ho bisogno di gestire API Web 2 eccezioni e restituire un oggetto ricco con il codice di stato corretto (401 per non autorizzato, 404 per ContentNotFound, etc) e alcune informazioni extra come il contenuto. Inoltre, ho bisogno che il contenuto assomigli ad un oggetto serializzato Exception
(avere le proprietà message
, exceptionMessage
, stackTrace
, ...).
soluzioni suggerite:
creare classi di eccezioni personalizzate e la scrittura di un filtro di eccezione personalizzato da applicare all'azione qualsiasi del controller. questo filtri eccezione personalizzata gestisce l'eccezione generata in base al suo tipo (una delle eccezioni personalizzate che ho già definito) e risponde di conseguenza via qualcosa come questo (il codice del filtro):
context.Response = context.Request.CreateErrorResponse(HttpStatusCode.Unauthorized, new Exception("my exception")));
avvolgendo il web già scritto api 2
*ActionResult
classi (System.Web.Http.Results.UnauthorizedResult Unauthorized()
,System.Web.Http.Results.OkResult Ok()
, ecc.) e aggiungono alcuni dati personalizzati a loro e li usano in modo che i loro risultati vengano passati al client ogni volta che vengono chiamati (il problema è in questo caso il tipo di ritorno dell'azione del mio controller dovrebbe essereIHttpActionResult
che non è così facilmente testabile e leggibile come un'azione fortemente tipizzata).
Quale soluzione dovrei scegliere? O c'è un altro modo per fare ciò che sto cercando di ottenere qui?
Questo post mi ha aiutato con l'esempio sul link "filtri di eccezione". – Stuart
@Stuart Nice! Sono contento che ti abbia dato un buon suggerimento. A proposito, vorrei andare con i gestori di eccezioni invece! http://www.asp.net/web-api/overview/error-handling/web-api-global-error-handling –