So greifen Sie auf bereits gelesene Inhalte zu

Ich habe eine Klasse, die von ApiController erbt. Es hat eine Put-Methode wie folgt:

[PUT("user/{UserId}")]
public HttpResponseMessage Put(string userId, PaymentRequest paymentRequest)
{
    // Calling business logic and so forth here
    // Return proper HttpResponseMessage here
}

Die Methode funktioniert wie oben beschrieben. Jetzt muss ich die Signatur des Methodenaufrufs validieren, aber hier stoße ich auf ein Problem. Die Signatur ist im Wesentlichen eine Kombination aus Methode + URL + Text. Die Methode, die ich durch Aufrufen von Request.Method erhalten kann, und die URL, die ich durch Aufrufen von Request.RequestUri.ToString () erhalten kann, aber ich kann den Körper nicht so wie er war haltenVor Es wurde vom asp.net MVC4-Framework automatisch in ein PaymentRequest-Objekt deserialisiert.

Mein erster Versuch: Wie ich jetzt verstanden habe, gibt Request.Content.ReadAsStringAsync (). Result nichts zurück. Dies liegt daran, dass der Inhalt nur einmal gelesen werden kann.

Mein zweiter Versuch: Ich habe versucht, es wieder in einen JSON-String zu serialisieren.

var serializer = new JavaScriptSerializer();
var paymentRequestAsJson = serializer.Serialize(paymentRequest);

Das Problem dabei ist, dass die Formatierung etwas anders ausfällt als der Hauptteil der Signatur. Es hat die gleichen Daten, aber einige Leerzeichen.

Ich kann nicht ändern, was der Aufrufer meiner Put-Methode tut, da dies eine Komponente eines Drittanbieters ist. Was soll ich machen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage