Ich habe eine Route in meinem Modul, die einen JSON-Text annehmen soll, der einen Blogbeitrag darstellt. Problem ist, dass der Anfragetext nicht seralisiert wird. Wenn ich debugge, sehe ich die folgenden Werte auf der Anfrage:
%Vor%Die Route
%Vor%Die HTTP-Anfrage
%Vor%Es ist nichts falsch mit Ihrem Code, das Problem ist, dass Sie Ihren JSON-Code umschlossen haben:
Ihr Objekt hat eine Eigenschaft namens Post
, dann hat es den eigentlichen Post.
Aktualisieren Sie Ihren Körper wie folgt:
{ "Title":"Hello", "Content":"World", "Created":"2014-04-26" }
Dies entspricht höchstwahrscheinlich den Eigenschaften Ihres Objekts Post
.
Unten ist die Serialisierung für den Client, nicht das, wonach die Frage gefragt wurde
Sie müssen eine Accept
Kopfzeile hinzufügen.
Ich habe über Nancy Conneg hier geschrieben:
Ihr Szenario funktioniert nicht, weil Sie dem Server nur mitteilen, was Ihr Inhalt ist, und nicht, was Sie im Gegenzug erwarten.
Mit dem Chrome-Plugin - Postman können Sie Ihr Szenario ähnlich wie folgt testen:
Wenn Sie den Header Accept
als application/json
anwenden, wird der zurückgegebene Inhalt serialisiert.
Alternativ können Sie am Ende Ihrer URL .json
hinzufügen, um sie als JSON zurückzugeben:
http://yoursite.com/blog.json
Dadurch wird der JSON-Serializer gezwungen, einzuschalten.
Wenn Sie JSON immer unabhängig zurückgeben möchten, können Sie Ihr Ergebnis mit .AsJson()
Hinweis: Wenn Sie einen dynamic
-Typ zurückgeben, müssen Sie ihn umwandeln: return Response.AsJson((object)post);