2015-04-16 2 views
12

Я пишу api-контроллер в ASP 5. Я хочу вернуть исключение из кода ошибки, если параметры, переданные службе, неверны. В текущей версии WebAPI я хотел бы сделать:Как вы выбрали исключение HttpResponseException в ASP 5 (vnext)

throw new HttpResponseException(HttpStatusCode.BadRequest); 

Однако HttpResponseException является частью System.Web, которая была удалена из ASP 5 и, таким образом, я не могу создать его экземпляр больше.

Каков правильный способ сделать это в vNext?

+1

Посмотрите на http://www.strathweb.com/2015/01/migrating-asp-net-web-api-mvc-6-exploring-web-api-compatibility -shim /. – DWright

ответ

8

Чтобы ответить на ваш вопрос, вы можете использовать WebApiCompatibilityShim порты HttpResponseException (и многие другие функции) вперед в MVC 6. (спасибо DWright для ссылки на that article.)

Похоже, что MVC-6 способ сделать это, чтобы вернуть IActionResponse из вашего метода, а затем вызвать HttpBadRequest(), который является методом на основе класса Microsoft.AspNet.Mvc.Controller, который возвращает BadRequestResult, что, по моему мнению, является лучшим способом получить статус 400 в ответ.

Класс Controller также имеет методы для других кодов ответов, включая метод HttpNotFound(), который вызывает возврат 404.

Смотрите также: https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api

+0

Это точно. FWIW, OP, похоже, ищет 400, а не 404, поэтому возвращает HttpBadRequest() '. И пришел сюда в поисках 401 или 'return HttpUnauthorized()'. –

+0

Спасибо, @lc. - Я не заметил этого несоответствия. Я отредактировал свой ответ. – n8mob

+0

Ссылка на WebApiCompatibilitySim мертва. Кроме того, вы могли бы прокомментировать, как мы должны отвечать на базовые запросы RESTful с MVC5 (которые даже в сгенерированном шаблоне являются методами «void»). –

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