Απαιτήσεις: Χρησιμοποιήστε το 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
(Τέλος)
|