Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 3324|Απάντηση: 0

[Πηγή] ASP.NET Η διεπαφή API Core(23) NULL επιστρέφει τον κωδικό κατάστασης HTTP 204

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 20/8/2023 3: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 έχει ως εξής:



Σημείωση:Εάν η διασύνδεση επιστρέψει έναν τύπο κενού, η εργασία επιστρέφει έναν κωδικό κατάστασης 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 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com