ASP.NET Core MVC: Wie wird Raw-JSON ohne Typ an eine Zeichenfolge gebunden?

Ähnlich zuDie alte Frage zu früheren ASP.NET-Versionen, ich möchte den Anfragetext eines HTTP-POST an einen String binden. Es scheint, dass die Methode bindet, aber dassvalue ist null, wenn ASP.NET meine Controller-Methode aufruft:

namespace Demo.Controllers
{

    [Route("[controller]")]
    public class WebApiDemoController : Controller
    {
    ...

    // POST api/values
    [HttpPost]
    public System.Net.Http.HttpResponseMessage Post([FromBody]string value)
    {
       // expected: value = json string, actual: json = null.
    }

Muss ich noch die Leiche aus einem Bach holen gehen? Oder soll das einfach funktionieren? Beim Testen der obigen Methode habe ich die folgenden http-Header verwendet:

Accept: Application/json
Content-Type: Application/json;charset=UTF-8

Ich übergebe im Körper im Folgenden:{ "a": 1 }

Ich möchte NICHT an eine Zeichenfolgenvariable namens a binden. Ich möchte jeden JSON-Inhalt, den ich erhalte, binden und dann den JSON-Inhalt, jeden beliebigen Inhalt, aus meiner Methode heraus verwenden.

Wenn ich die Dokumentation verstanden habe, wird das[FromBody]as @ -Attribut hätte tun sollen, was ich wollte, aber ich vermute, dass der ASP.NET-Kern-MVC-Bindungsmechanismus einen JSON-Wert nicht an einen "Zeichenfolgenwert" bindet, aber vielleicht könnte ich etwas anderes tun, das mir ein gleichwertiges Niveau verleiht Flexibilität

Eine ähnliche FrageHie gibt mir die Idee, vielleicht hätte ich @ schreiben soll[FromBody] dynamic data anstelle von[FromBody] string value.

Update: Über diese Art von Trick sollte man sich vorher Gedanken machen, denn wenn Sie wollten, dass das .net-Kernframework JSON- und XML-Codierung für Sie handhabt, haben Sie diese Funktion gerade beendet. Bestimmte Arten von REST-Servern können und müssen häufig sowohl XML- als auch JSON-Inhaltstypen unterstützen, zumindest diejenigen, auf die ich gestoßen bin und die über Standarddokumente verfügen.

Antworten auf die Frage(12)

Ihre Antwort auf die Frage