Ich habe diese Klasse:
%Vor%Und diese WEB-API-Methode:
%Vor%Ich habe die Web-API so eingestellt, dass sie JSON anstelle von XML zurückgibt, und ich habe keine weiteren Änderungen an der Standardkonfiguration vorgenommen. Ich versuche diese Methode mit der RESTClient-Erweiterung von Firefox zu testen. Hier ist meine Anfrage:
%Vor%Allerdings bekomme ich diesen Fehler:
{"Message": "Der Medientyp der Anfrageentität 'text / plain' wird für diese Ressource nicht unterstützt.", "ExceptionMessage": "Es ist kein MediaTypeFormatter verfügbar, um ein Objekt vom Typ 'MyClass' aus Inhalten mit Medien zu lesen Geben Sie 'text / plain' ein. "," ExceptionType ":" System.Net.Http.UnsupportedMediaTypeException "," StackTrace ":" bei System.Net.Http.HttpContentExtensions.ReadAsAsync [T] (HttpContent-Inhalt, Typtyp, IEnumerable
1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n at System.Net.Http.HttpContentExtensions.ReadAsAsync(HttpContent content, Type type, IEnumerable
1 Formatierer, IFormatterLogger formatterLogger, CancellationToken cancellationToken) \ r \ n bei System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync (HttpRequestMessage-Anforderung, Typtyp, IEnumerable'1 Formatierer, IFormatterLogger FormatiererLogger, CancellationToken cancellationToken) "}
Bearbeiten:
Ich verstehe das nicht, weil es scheint, dass die Methode nicht einmal aufgerufen wird. Wenn ich debugge, sehe ich, dass der Konstruktor aufgerufen wird und dann keine andere Methode aufgerufen wird. Es wird keine Ausnahme ausgelöst.
Ich bin jetzt schon eine ganze Weile bei diesem Thema. Ich habe festgestellt, dass dieses Problem normalerweise auftritt, wenn Content-Type nicht richtig eingestellt ist, aber es scheint nicht mein Fall zu sein, da die Anfrage nicht einmal bearbeitet wird.
Irgendeine Idee?
Danke
Sie haben den Content-Type von application/json
im Body gesendet, anstatt als Header. So war Ihre POST-Anfrage standardmäßig auf text / plain. Die RestClient-Erweiterung hat eine separate Stelle, um den Header einzugeben.
Wenn Sie jemals eine Frage zu dem haben, was über die Leitung gesendet wird, überprüfen Sie die Registerkarte Netzwerk in den Entwicklertools Ihres Browsers oder verwenden Sie ein Tool wie Fiddler , um den Netzwerkverkehr zu sehen.
Innerhalb POSTMAN müssen Sie nur die Einstellung in application / json ändern. Siehe Bild unten.
Wahrscheinlich müssen Sie folgende Inhalte in Ihre HTTP Anfrage Kopfzeile einfügen:
%Vor%Ich hatte dieses Problem, als ich einen Controller hatte, der zwei verschiedene Modelle in den Params hatte. Die Post-Methode verwendete ein Modell, das nicht im builder.EntitySet angegeben war. Die Art, wie ich das gelöst habe, besteht darin, separate Lese- und Schreib-Controller zu erstellen. Dies entspricht dem CQRS. Obwohl die API-Spezifikationen unordentlicher werden .. Gott sei Dank für Swagger!
Tags und Links asp.net-web-api json asp.net-web-api2