Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 3324|Відповідь: 0

[Джерело] ASP.NET Інтерфейс API Core(23) NULL повертає статус HTTP 204

[Копіювати посилання]
Опубліковано 20.08.2023 15:27:55 | | | |
Вимоги: Використовуйте ASP.NET Core 6 для створення нового проєкту Web API для надання зовнішніх сервісів, інтерфейс може повернути порожній об'єкт або порожній рядок, якщо він повертає NULL, відповідь інтерфейсу виглядає: 204 Без контенту, хоча 204 означає звичайний код відповіді (з ним немає нічого поганого), але,Деякі інкапсульовані HTTP-фреймворки вважатимуть нормальним лише статус коду 200。 Тож змініть статус коду 204 на статус 200.

Код інтерфейсу:

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



Інтерфейс повертає статус HTTP 204 No Content через 4 реалізації форматування вихідних даних, доданих за замовчуванням у 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