MVC 3 + REST возвращает пользовательскую ошибку http? - PullRequest
3 голосов
/ 09 марта 2012

В моем приложении я пытаюсь сделать так, чтобы при выполнении вызова API REST, если произошла ошибка, он вернул правильный код состояния, то либо Json, либо Xml в теле ответа.

Итак 400: { 'ErrorCode': '400', 'Reason' : 'You did something wrong..' }

или 400: <Error><ErrorCode>400</ErrorCode><Reason>You did something wrong</Reason></Error>

Однако я не могу найти, как установить статус и тело, чтобы это произошло.Используя fiddler, проверьте, что передается назад, и в-четвертых, я обнаружил, что если я верну нормальное ActionResult, тогда я смогу вернуть тело сообщения, но статус 200. Если я использую HttpException, тогда я могу установить код состояния,тело сообщения возвращается в виде большого HTML-документа.Я пытался использовать HttpStatusCodeResult, но, похоже, это просто не получается и возвращает 302.

Я немного озадачен.

Ответы [ 3 ]

2 голосов
/ 09 марта 2012

Попробуйте Response.StatusCode = (int)HttpStatusCode.BadRequest; в вашем методе действий. Ознакомьтесь с этой статьей на develoq для краткого руководства: http://develoq.net/2011/returning-a-body-content-with-400-http-status-code/

2 голосов
/ 23 ноября 2014

Web API может справиться с этим различными способами, но если вы хотите придерживаться ASP.NET MVC, используйте следующий код:

 Response.StatusCode = 500;
 Response.TrySkipIisCustomErrors = true;
 return Content("Error description goes here.", "text/plain");
1 голос
/ 09 марта 2012

Ознакомьтесь с MVC 4 Beta, есть новая функция, которая называется Web API, которая поможет вам решить эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...