it-swarm.com.de

Wie kann ich den Anforderungstext in ASP.NET-Web-API in Visual Studio anzeigen?

Wie kann ich den Anforderungstext in ASP.NET-Web-API in Visual Studio anzeigen? In ASP.NET MVC können Sie QuickWatch verwenden, um das Request-Objekt zu untersuchen und den Inhalt des Textkörpers sowie alle veröffentlichten Formulardaten anzuzeigen. Nach dem, was ich gelesen habe, erlaubt es Ihnen die ASP.NET-Web-API nicht, den Text mehr als einmal zu lesen. 

Dies ist sehr ärgerlich, wenn Sie herausfinden wollen, warum ein bestimmter Wert nicht richtig gebunden wurde. Gibt es eine schnelle Möglichkeit, dies zu tun, ohne die Ablaufverfolgung/Protokollierung einzurichten?

20
Omar

Am einfachsten ist es, Fiddler zu installieren. Dann sehen Sie alles, was über die Leitung gesendet wird, und prüfen nicht nur die Anforderungsnutzlast, sondern auch die HTTP-Header. Wenn Sie die API über Javascript verwenden, zeigen Ihnen FireBug, Chrome Developer Toolbar und IE Developer Tools alle Netzwerkanfragen der Website.

Wenn Sie den Verkehr auf dem Server unbedingt überprüfen müssen, können Sie, wenn Sie Ihre Web-API in einer ASP.NET-Anwendung hosten, die folgende Zeile in Ihr unmittelbares Fenster einfügen:

new StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd()
32
Darin Dimitrov

wenn du Körper brauchst >> Formulardaten

Post localhost: 53356/api/autoparkapi/GetRecod

key = jsonRequest und value = [{"abcd": "zxxx"}]

       //  API -Controller Method :: 

        var httpContext = (HttpContextWrapper)Request.Properties["MS_HttpContext"];
        var foo = httpContext.Request.Form["jsonRequest"];
        return foo; //This is value passed in request
3
Saurin Vala

Für mich @DarinDimitrov Antwort gab

fehler CS0246: Der Typ- oder Namespace-Name 'StreamReader' wurde nicht gefunden (Fehlt eine using-Direktive oder eine Assembly-Referenz?)

Hinzufügen von Namespace hat es geschafft

new System.IO.StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd()

Hoffe das spart dir etwas Zeit

2

Für mich gab @Matas Vaitkevicius eine Antwort

fehler CS1061: 'HttpContextBase' enthält keine Definition für 'Current' und keine Erweiterungsmethode 'Current' akzeptiert ein erstes Argument vom Typ 'HttpContextBase' konnte gefunden werden (fehlt eine using Direktive oder eine Assemblyreferenz?)

HttpContext.Current durch System.Web.HttpContext.Current zu ersetzen, hat es für mich getan

new System.IO.StreamReader(System.Web.HttpContext.Current.Request.InputStream).ReadToEnd()

Ich hoffe, das erspart Ihnen etwas Zeit

0
Taran

Für ASP.NET Core verwenden Sie dies im unmittelbaren Fenster:

new System.IO.StreamReader(Request.Body).ReadToEnd()
0
gldraphael

Jeder dieser Werte könnte funktionieren, wenn sich die Position des Steam auf Position 0 befindet.

HttpContext.Current.Request.InputStream.Position =  0;
var body = new StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd();
0
dampee