Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 3324|Ответ: 0

[Источник] ASP.NET Интерфейс API Core(23) NULL возвращает статус HTTP 204

[Скопировать ссылку]
Опубликовано 20.08.2023 15:27:55 | | | |
Требования: Используйте ASP.NET Core 6 для создания нового проекта Web API для предоставления внешних сервисов, интерфейс может вернуть пустой объект или пустую строку, если он возвращает NULL, ответ интерфейса: 204 No Content, хотя 204 — это обычный код ответа (с ним нет ничего плохого), но,Некоторые инкапсулированные HTTP-фреймворки считают нормальным только статус 200。 Поэтому измените статус 204 на 200.

Код интерфейса:

Тест показан ниже:



Интерфейс возвращает статус HTTP 204 No Content благодаря четырём реализациям форматирования вывода, добавленных по умолчанию в ASP.NET Core:

  • Microsoft.AspNetCore.Mvc.Formatters.HttpNoContentOutputFormatter
  • Microsoft.AspNetCore.Mvc.Formatters.StringOutputFormatter
  • Microsoft.AspNetCore.Mvc.Formatters.StreamOutputFormatter
  • Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter


Исходный код HttpNoContentOutputFormatter следующий:



Заметка:Если интерфейс возвращает тип void, Task возвращает статус HTTP 200потому что он не входит в метод CanWriteResult в HttpNoContentOutputFormatter!! В это вводЕсли метод CanWriteResult возвращает true, он пройдёт через WriteAsyncМетод.





решение

Удалите класс реализации HttpNoContentOutputFormatter из коллекции OutputFormatters следующим кодом:

Снова получите доступ к интерфейсу, проверьте следующим образом:

Тип возврата — string?, возвращает статус 200 и не имеет выхода
Тип возврата — object?, возвращает статус 200 и выводит null

(Конец)




Предыдущий:Контейнер Docker основан на aspnet:6.0 для установки ping
Следующий:Браузер Windows Edge открывает решение для сбоев с помощью IE
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com