Die ASP.NET-Web-API führt standardmäßig eine Inhaltsaushandlung durch. Gibt XML oder JSON oder einen anderen Typ basierend auf dem Accept
Header zurück. Ich brauche / will das nicht. Gibt es eine Möglichkeit (wie ein Attribut oder etwas anderes), die Web-API anzuweisen, immer JSON zurückzugeben?
asp.net-mvc
asp.net-web-api
Borek Bernard
quelle
quelle
GlobalConfiguration.Configuration.Formatters
Antworten:
Unterstützung nur von JSON in der ASP.NET-Web-API - DER RICHTIGE WEG
Ersetzen Sie IContentNegotiator durch JsonContentNegotiator:
Implementierung von JsonContentNegotiator:
quelle
Accept
XML- Client JSON erhält und keinen 406 ?Accept
Header zurück.GlobalConfiguration...Clear()
funktioniert tatsächlich.Löschen Sie alle Formatierer und fügen Sie den Json-Formatierer wieder hinzu.
BEARBEITEN
Ich habe es
Global.asax
innen hinzugefügtApplication_Start()
.quelle
Philip W hatte die richtige Antwort, aber aus Gründen der Klarheit und einer vollständigen funktionierenden Lösung bearbeiten Sie Ihre Global.asax.cs-Datei folgendermaßen: (Beachten Sie, dass ich der referenzgenerierten Datei den Verweis System.Net.Http.Formatting hinzufügen musste.)
quelle
Dadurch wird der XML-Formatierer gelöscht und standardmäßig das JSON-Format verwendet.
quelle
Inspiriert von Dmitry Pavlovs hervorragender Antwort, habe ich sie leicht geändert, damit ich jeden Formatierer einstecken kann, den ich erzwingen wollte.
Gutschrift an Dmitry.
quelle
Wenn Sie dies nur für eine Methode tun möchten, deklarieren Sie Ihre Methode als zurückgegeben
HttpResponseMessage
anstelle vonIEnumerable<Whatever>
und tun Sie Folgendes:Dieser Code ist schmerzhaft für Unit-Tests, aber das ist auch so möglich:
quelle
Dies hat die richtigen Header gesetzt. Scheint etwas eleganter.
quelle
Sie können in WebApiConfig.cs verwenden:
quelle
für diejenigen, die OWIN verwenden
wird (in Startup.cs):
quelle