Как отправить тело с ошибочным HTTP-ответом в ASP.NET Core Web API? - PullRequest
0 голосов
/ 11 февраля 2019

Я преобразую проект веб-API ASP.NET в веб-API ASP.NET Core.Ранее мы возвращали ошибочные ответы, например, так:

throw new HttpResponseException(ErrorResponses.CreateErrorResponse(HttpStatusCode.Conflict, "Too many linked devices", new { status = (int)SignInStatus.TooManyLinkedDevices }));

Обратите внимание, как мы установили код состояния http, сообщение об ошибке и тело ответа.В Core я могу сделать это:

return Conflict("Too many linked devices");

Однако я не вижу способа также установить тело ответа.Какая правильная техника для этого?

1 Ответ

0 голосов
/ 11 февраля 2019

Я не уверен, что точно соответствует каждому параметру в "старом" коде, но есть только одно тело ответа, поэтому логически, возвращать как строку "Too many connected devices", так и объект невозможно.Либо строка, либо объект на самом деле не возвращались в теле ответа.

Тем не менее, ваше тело ответа с Conflict - это параметр, который вы передаете ему в данный момент.Это может быть либо объект (строка является объектом), либо ModelStateDictionary (то есть ModelState).Вам, вероятно, нужно сделать что-то вроде следующего:

return Conflict(new {
    message = "Too many linked devices",
    status = (int)SignInStatus.TooManyLinkedDevices
})
...