Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 3324|Antwort: 0

[Quelle] ASP.NET Core(23) API-Schnittstelle NULL gibt den HTTP-204-Statuscode zurück

[Link kopieren]
Veröffentlicht am 20.08.2023 15:27:55 | | | |
Anforderungen: Verwenden Sie ASP.NET Core 6, um ein neues Web-API-Projekt zur Bereitstellung externer Dienste zu erstellen, die Schnittstelle kann ein leeres Objekt oder eine leere Zeichenkette zurückgeben; wenn sie NULL zurückgibt, lautet die Schnittstellenantwort: 204 Kein Inhalt, obwohl 204 den normalen Antwortcode darstellt (daran ist nichts auszusetzen), aber,Einige gekapselte HTTP-Frameworks betrachten den 200-Statuscode nur als normal。 Also ändere den Statuscode 204 in einen 200er-Statuscode.

Schnittstellencode:

Der Test ist unten dargestellt:



Die Schnittstelle gibt aufgrund der 4 standardmäßig in ASP.NET Core hinzugefügten Ausgabeformatierungs-Implementierungen einen HTTP 204 No Content Statuscode zurück:

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


Der Quellcode für HttpNoContentOutputFormatter ist wie folgt:



Anmerkung:Wenn die Schnittstelle einen Void-Typ zurückgibt, gibt Task einen HTTP-200-Statuscode zurückweil sie nicht in die CanWriteResult-Methode in HttpNoContentOutputFormatter!! eingeht. Damit hineinWenn die CanWriteResult-Methode true zurückgibt, läuft sie über WriteAsyncMethode.





Lösung

Entferne die Implementierungsklasse HttpNoContentOutputFormatter aus der OutputFormatter-Sammlung mit folgendem Code:

Greifen Sie erneut auf die Schnittstelle zu, testen Sie wie folgt:

Der Rückgabetyp ist string?, gibt einen 200-Statuscode zurück und hat keine Ausgabe
Der Rückgabetyp ist Object?, gibt einen 200-Statuscode zurück und gibt null aus

(Ende)




Vorhergehend:Der Docker-Container basiert auf aspnet:6.0, um das Ping-Tool zu installieren.
Nächster:Der Windows-Edge-Browser öffnet eine Absturzlösung mit IE
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com