2012-06-27 5 views
12

От http://www.asp.net/web-api/overview/web-api-routing-and-actions/exception-handlingКакая разница между HttpResponseException и HttpException

HttpResponseException

Что происходит, если контроллер Web API выдает исключение? По умолчанию большинство исключений транслируются в ответ HTTP с кодом состояния 500, Internal Server Error.

Тип исключения HttpResponse - это особый случай. Это исключение возвращает любой код состояния HTTP, который вы указали в конструкторе .

За исключением этого не. Скрипач показывает, что возвращается 500 человек.

Однако HttpException, похоже, делает то, что говорится в этой статье.

Неправильная документация или я что-то упускаю?

UPDATE

Печатая что, я была идея. Я пробовал оба из двух контроллеров, ApiController и стандартного контроллера MVC.

Эти два исключения работают в обратном направлении друг к другу в зависимости от типа контроллера, из которого они выбраны.

  • Используйте HttpResponseException, чтобы вернуть правильный HTTP-код из контроллера API .
  • Используйте HttpException, чтобы вернуть правильный HTTP-код с контроллера MVC.

ответ

13

[Переехал мое обновление ответа]

Печатая что, я была идея. Я пробовал оба из двух контроллеров, ApiController и стандартного контроллера MVC.

Эти два исключения работают в обратном направлении друг к другу в зависимости от типа контроллера, из которого они выбраны.

  • Используйте HttpResponseException, чтобы вернуть правильный HTTP-код с контроллера API.
  • Используйте HttpException, чтобы вернуть правильный HTTP-код с контроллера MVC.
+1

Вы можете принять собственный ответ – sidon

+1

Thx, это объясняет, почему моя инфраструктура отлично работает с MVC-контроллерами (возвращает правильное исключение) и больше не работает с контроллерами API (возвращается 500) - но это просто doesn Не имеет никакого смысла :( – peter

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