Ich habe ein Attribut namens Log, das versucht, Inhalt der Anfrage und Antwort in eine Textdatei zu protokollieren. Ich habe das über meinen Controller gelegt, um alle Aktionen abzudecken. In LogAttribute lese ich Inhalt als String (ReadAsStringAsync), damit ich den Anfragetext nicht verliere.Web API Anfrage Inhalt ist leer in Aktion Filter
Auf der anderen Seite habe ich FromBody-Attribut vor meine Aktion Parameter-Klasse gesetzt, um seine Vorteile zu nutzen.
Das Problem ist der Inhalt ist immer entweder in ActionExecuting oder ActionExecuted leer.
Ich denke, das ist, weil FromBody vor meinem Log-Attribut im Gegensatz zu ihrer Reihenfolge im Code ausgeführt wird. Und wieder denke ich daran, dass die beste Action/Controller-Übereinstimmung für die Anfrage gemäß den Aktionsparametern (Route Processing) gefunden wird. Danach wird mein Anfragetext gelöscht, da der Anfragetext in WebApi nicht gepuffert ist.
Ich möchte wissen, ob es eine Möglichkeit gibt, die Laufzeitfolge des FromBody-Attributs und meines Log-Attributs zu ändern? oder etwas anderes, das das Problem löst! Ich sollte erwähnen, dass ich FromBody nicht entfernen und HttpRequestMessage anstelle meines Modells oder etwas in der Art verwenden möchte.
dieses neben Ihrer async Handhabung ist falsch. Das Verwenden von .Result ist gefährlich, das sollten Sie, wenn möglich, vermeiden. Überschreiben Sie lieber die OnActionExecutingAsync-Methode, mit der Sie warten können. –
@LukasK eigentlich wurde das nur geschrieben, um meine Frage zu erklären. aber du hast Recht. –