ActionResult для установки HTTP StatusCode .NET Core Api

#asp.net-core-webapi #httpresponse #http-status-codes

#asp.net-core-webapi #httpresponse #http-status-codes

Вопрос:

Я просто пытаюсь отправить ответное сообщение 404 обратно из вызова API, однако сталкиваюсь с некоторыми проблемами.

У меня есть следующая функция, которая возвращает ActionResult:

     private static ActionResult StatusResult(HttpStatusCode statusCode, string reason) => new ContentResult
    {
        StatusCode = (int)statusCode,
        Content = $"Status Code: {(int)statusCode} - {statusCode} | {reason}",
        ContentType = "application/json",
    };
 

и назовите это так:

 return StatusResult(HttpStatusCode.NotFound, "ID not found.");
 

Он возвращается обратно клиенту, однако StatusCode по-прежнему равен 200, а не 404. Есть ли простой способ исправить это?

Пример ответа:

Пример ответа

Комментарии:

1. Я попробовал ваш код, и для меня он возвращает правильный statuscode (404). Я использовал ASP.NET 5 Веб-API.

2. Мы можем получить правильный код состояния, где вы вызываете этот метод StatusResult ?

3. Спасибо за вашу помощь, в конце концов я изменил объект HttpContext и вернул то, что решило мою проблему. Например. context.Response. ContentType = «application / json»; context.Response. StatusCode = (int)statuscode;

Ответ №1:

Это может работать не для всех, но в итоге я отредактировал объект HttpContext напрямую и вернул его обратно клиенту.

Который выдал правильные коды состояния в качестве ответа.

 context.Response.ContentType = "application / json";
context.Response.StatusCode = (int)statuscode;