Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 3324|Respuesta: 0

[Fuente] ASP.NET interfaz API NULL de Core(23) devuelve el código de estado HTTP 204

[Copiar enlace]
Publicado en 20/8/2023 15:27:55 | | | |
Requisitos: Utiliza ASP.NET Core 6 para crear un nuevo proyecto de API web que proporcione servicios externos, la interfaz puede devolver un objeto vacío o una cadena vacía; si devuelve NULL, la respuesta de la interfaz es: 204 Sin contenido, aunque 204 representa el código de respuesta normal (no hay nada malo en él), pero,Algunos frameworks HTTP encapsulados solo consideran normal el código de estado 200。 Así que cambia el código de estado 204 por uno de estado 200.

Código de la interfaz:

La prueba se muestra a continuación:



La interfaz devuelve un código de estado HTTP 204 Sin contenido debido a las 4 implementaciones de formato de salida añadidas por defecto en ASP.NET Core:

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


El código fuente de HttpNoContentOutputFormatter es el siguiente:



Nota:Si la interfaz devuelve un tipo void, Task devuelve un código de estado HTTP 200porque no entra en el método CanWriteResult en HttpNoContentOutputFormatter!! en ese sentidoSi el método CanWriteResult devuelve true, pasará por WriteAsyncMétodo.





solución

Elimina la clase de implementación HttpNoContentOutputFormatter de la colección OutputFormatter con el siguiente código:

Accede de nuevo a la interfaz, prueba lo siguiente:

El tipo de retorno es ¿cadena?, devuelve un código de estado 200 y no tiene ninguna salida
El tipo de retorno es object?, devuelve un código de estado 200 y genera null

(Fin)




Anterior:El contenedor Docker se basa en aspnet:6.0 para instalar la herramienta ping
Próximo:El navegador Windows Edge abre la solución de fallo con IE
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com