Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 3324|Antwoord: 0

[Bron] ASP.NET Core(23) API-interface NULL geeft HTTP 204-statuscode terug

[Link kopiëren]
Geplaatst op 20-08-2023 15:27:55 | | | |
Vereisten: Gebruik ASP.NET Core 6 om een nieuw Web API-project aan te maken om externe diensten te leveren, de interface kan een leeg object of een lege string teruggeven, als het NULL teruggeeft, is de interface respons: 204 Geen Inhoud, hoewel 204 de normale responscode vertegenwoordigt (er is niets mis mee), maar,Sommige gekapselde HTTP-frameworks beschouwen de 200-statuscode alleen als normaal。 Verander dus de statuscode 204 in een statuscode van 200.

Interfacecode:

De test wordt hieronder getoond:



De interface geeft een HTTP 204 No Content statuscode terug vanwege de 4 uitvoerformatteringsimplementaties die standaard in ASP.NET Core zijn toegevoegd:

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


De broncode voor HttpNoContentOutputFormatter is als volgt:



Notitie:Als de interface een void-type teruggeeft, geeft Task een HTTP 200-statuscode terugomdat het niet in de CanWriteResult-methode in HttpNoContentOutputFormatter!! gaat daarinAls de CanWriteResult-methode true teruggeeft, gaat deze via WriteAsyncMethode.





oplossing

Verwijder de implementatieklasse HttpNoContentOutputFormatter uit de OutputFormatters-collectie met de volgende code:

Toegang tot de interface opnieuw, test als volgt:

Het retourtype is string?, geeft een statuscode 200 terug en heeft geen output
Het returntype is object?, geeft een 200 statuscode terug en geeft null

(Einde)




Vorig:De Docker-container is gebaseerd op aspnet:6.0 om de ping-tool te installeren
Volgend:Windows Edge-browser opent crashoplossing met IE
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com