2013-11-20 19 views
7

L'operazione Web API restituisce un HTTP 500 (Internal Server Error) codice di stato:Web API 2 - ApiController.InternalServerError() restituisce HTTP 400 codice di stato

public IHttpActionResult Post() 
{ 
    return InternalServerError(); 
} 

Ma questa azione restituisce un HTTP 400 (Bad Request) codice di stato:

public IHttpActionResult Post() 
{ 
    return InternalServerError(new Exception()); 
} 

mi si aspetterebbe entrambe le azioni per restituire un codice di stato e 500 la seconda azione pone alcuni dei dettagli di errore nel corpo della risposta.

Il mio primo pensiero è che questo è un bug ma volevo ottenere qualche altro input. C'è una buona ragione per cui un 400 dovrebbe essere restituito nella seconda azione invece di un 500?

UPDATE:

La documentazione su questo metodo si legge:

Crea uno System.Web.Http.Results.ExceptionResult (500 Internal Server Error) con l'eccezione specificata.

Sto pensando sempre più questo è un bug.

+0

non c'è problema relativo a questo, si dovrebbe aprire una alla http://aspnetwebstack.codeplex.com/workitem/list/basic – Fals

risposta

12

destro, questo è stato un problema noto che è stato fissato dopo API Web 2 release ... è possibile utilizzare la seguente soluzione per risolvere questo issue..example:

return new ResponseMessageResult(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, invalidOpException)); 

In seguito è stato il problema che è stato registrato prima:
https://aspnetwebstack.codeplex.com/workitem/1318

+0

Cool, grazie per la conferma. – jebar8

Problemi correlati