У меня есть очень легкий REST API, который я написал, который проверяет пользователя.Я хочу вернуть валидацию как объект JSON, что я могу, но если отсутствуют аргументы, я хочу вернуть ошибку с некоторой информацией.Вот мой контроллер
public class GraphAccessController : ApiController
{
private UserValidation _userValidation;
private UserPermissions _userPermissions;
string _application;
public GraphAccessController()
{
_userValidation = new UserValidation();
_userPermissions = new UserPermissions();
}
public object GetUserValidation(string application)
{
if (string.IsNullOrEmpty(application))
{
return StatusCode(HttpStatusCode.MethodNotAllowed);
//return new HttpResponseException(HttpStatusCode.MethodNotAllowed);
}
try
{
_application = application;
ValidateUser(WindowsIdentity.GetCurrent(), application);
return _userValidation;
}
catch (HttpResponseException e)
{
string error = e.ToString();
return StatusCode(HttpStatusCode.InternalServerError);
}
}....(other private calls for validation)
{
Когда передается «приложение», я получаю хороший объект JSON.Однако, когда я пытаюсь вернуть ошибку пользователю при проверке IsNullOrEmpty, если я просто вызываю с помощью PostMan:
return StatusCode(HttpStatusCode.MethodNotAllowed)
, состояние устанавливается на «405 Method Not Allowed», но я хотел быпередать текст, чтобы указать, почему это не удалось.Поэтому я попытался:
throw new HttpResponseException(HttpStatusCode.MethodNotAllowed);
, и это просто останавливает выполнение в моем контроле.Таким образом, я сделал возврат вместо throw, я получил статус 200 (указывая, что все в порядке), но данные заголовка JSON:
{"Response": {"Version": {"_Major ": 1,« _Minor »: 1,« _Build »: -1,« _Revision »: -1},« Content »: null,« StatusCode »: 405,« ReasonPhrase »:« Метод не разрешен »,« Заголовки": []," RequestMessage ": null," IsSuccessStatusCode ": false}," Message ":" Обработка HTTP-запроса привела к исключению. Дополнительные сведения см. В ответе HTTP, возвращенном свойством 'Response' этого исключения.. "," Data ": {}," InnerException ": null," TargetSite ": null," StackTrace ": null," HelpLink ": null," Source ": null," HResult ": -2146233088}
Как видно из кода в улове, я также пытаюсь сделать то же самое.Как вы возвращаете StatusCode с соответствующим информационным текстом вызывающему абоненту, чтобы он мог проверить статус, а если он не равен 200, проверить тело на наличие текста ошибки?
Спасибо