2013-11-20 3 views
7

Это действие Web API возвращает HTTP 500 (Внутренняя ошибка сервера) код состояния:Web API 2 - ApiController.InternalServerError() возвращает HTTP 400 код состояния

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

Но это действие возвращает HTTP 400 (Bad Request) код состояния:

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

я ожидал бы оба действия, чтобы вернуть код 500 статуса и второе действие помещает некоторые детали ошибки в теле ответа.

Моя первая мысль заключается в том, что это ошибка, но я хотел получить другой вход. Есть ли веская причина, почему 400 должны быть возвращены во втором действии вместо 500?

ОБНОВЛЕНИЕ:

В документации по этому методу гласит:

Создает System.Web.Http.Results.ExceptionResult (500 Внутренняя ошибка сервера) с указанным исключением.

Я все больше и больше думаю, что это ошибка.

+0

Там не проблема, связанная с этим, вы должны открыть один на http://aspnetwebstack.codeplex.com/workitem/list/basic – Fals

ответ

12

Право, это известная проблема, которая была зафиксирована после выпуска Web API 2 ... Вы можете использовать следующий метод обхода, чтобы исправить эту issue..example:

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

После был вопрос, который был зарегистрирован раньше:
https://aspnetwebstack.codeplex.com/workitem/1318

+0

Круто, спасибо за подтверждение. – jebar8

Смежные вопросы