2013-05-20 5 views
16

Wie kann ich den Anfragetext in der ASP.NET-Web-API von Visual Studio aus anzeigen? In ASP.NET MVC können Sie QuickWatch verwenden, um das Request-Objekt zu untersuchen und den Inhalt des Textkörpers und aller bereitgestellten Formulardaten anzuzeigen. Nach dem, was ich gelesen habe, erlaubt ASP.NET Web API Ihnen nicht, den Körper mehr als einmal zu lesen.Wie kann ich den Anfragetext in der ASP.NET-Web-API von Visual Studio aus anzeigen?

Dies ist sehr ärgerlich, wenn man versucht herauszufinden, warum ein bestimmter Wert nicht korrekt gebunden wurde. Gibt es einen schnellen Weg, dies zu tun, ohne Tracing/Logging einzurichten?

+0

Firebug wird dir nicht helfen zu erreichen, was Sie wollen? Es beobachtet den tatsächlichen HTTP-Verkehr vom Browser, was VS nicht wirklich kann. – DOK

+1

Die API-Anfrage kommt von einer externen Quelle, auf die ich keinen Zugriff habe. – Omar

Antwort

29

Die einfachste zu installierende Fiddler. Dann sehen Sie alles, was über die Leitung gesendet wird und prüfen nicht nur die Nutzdaten der Anfrage, sondern auch die HTTP-Header. Und wenn Sie die API von JavaScript konsumieren, zeigen Ihnen Dinge wie FireBug, Chrome Developer Toolbar und IE Developer Tools alle Netzwerkanforderungen, die von der Website gestellt werden.

Wenn Sie unbedingt den Verkehr auf dem Server dann überprüfen, wenn Sie Ihren Web-API innerhalb einer ASP.NET-Anwendung hosten Sie die folgende Zeile in Ihrem unmittelbaren Fenster setzen könnten:

new StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd() 
+8

oder Sie könnten auch 'request.Content.ReadAsStringAsync(). Result' too.Dies würde den Anforderungsinhalt puffern und der Rest der Pipeline würde immer noch wie erwartet funktionieren, aber wenn Sie StreamReader verwenden, um den Stream bis zum Ende zu lesen, müssen Sie die Position zurücksetzen, damit der Rest der Pipeline funktioniert. Wie auch immer du erwähntest, wäre 'Fiddler' meine erste Wahl. –

3

wenn Sie brauchen Körper >> Formular-Daten

Beitrag localhost: 53356/api/carparksapi/GetRecod

key = jsonRequest und Wert = [{ "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 
1

Für mich @DarinDimitrov Antwort

Fehler CS0246 gab: Der Typ oder Namespace-Name‚Stream‘konnte nicht gefunden werden (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis ?)

Hinzufügen von Namespace hat es

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

Hoffnung das spart Ihnen einige Zeit

0

Für mich @Matas Vaitkevicius Antwort gab

Fehler CS1061: ‚Httpcontextbase‘ enthält keine Definition für ‚Aktuell‘ und keine Erweiterungsmethode ‚Aktuell‘ ein erstes Argument vom Typ ‚Httpcontextbase‘ Annahme gefunden werden (möglicherweise fehlt eine using -Direktive oder ein Assemblyverweis?)

Repl HttpContext.Current mit System.Web.HttpContext.Current acing hat es für mich

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

Hope this Sie einige Zeit spart

Verwandte Themen