2012-06-27 8 views
12

Da http://www.asp.net/web-api/overview/web-api-routing-and-actions/exception-handlingQual è la differenza tra HttpResponseException e HttpException

HttpResponseException

Che cosa succede se un controller Web API genera un'eccezione? Per default, la maggior parte delle eccezioni viene tradotta in una risposta HTTP con codice di stato 500, Errore interno del server.

Il tipo HttpResponseException è un caso speciale. Questa eccezione restituisce qualsiasi codice di stato HTTP specificato nel costruttore di l'eccezione.

Tranne che è non. Fiddler mi mostra che ne viene restituito un 500.

Tuttavia, HttpException sembra fare ciò che dice l'articolo.

La documentazione è errata o mi manca qualcosa?

UPDATE

Durante la digitazione che fuori, ho avuto un'idea. Ho provato sia da due controller, un ApiController e un controller MVC standard.

Le due eccezioni funzionano in ordine inverso a seconda del tipo di controller da cui vengono generate.

  • Utilizzare HttpResponseException per restituire un codice HTTP corretto da un controller API .
  • Utilizzare HttpException per restituire un codice HTTP corretto da un controller MVC .

risposta

13

[spostato il mio aggiornamento a una risposta]

Durante la digitazione che fuori, ho avuto un'idea. Ho provato sia da due controller, un ApiController e un controller MVC standard.

Le due eccezioni funzionano in ordine inverso a seconda del tipo di controller da cui vengono generate.

  • Utilizzare HttpResponseException per restituire un codice HTTP corretto da un controller API.
  • Utilizzare HttpException per restituire un codice HTTP corretto da un controller MVC.
+1

È possibile accettare la propria risposta – sidon

+1

Thx, questo spiega perché il mio framework ha funzionato perfettamente con MVC Controller (restituendo l'eccezione corretta) e non con più i controller API (restituendo 500) - ma non funziona non ha alcun senso :( – peter

Problemi correlati