如何从Visual Studio中查看ASP.NET Web API中的请求正文?

时间:2013-05-20 14:49:55

标签: visual-studio asp.net-web-api

如何从Visual Studio中查看ASP.NET Web API中的请求正文?在ASP.NET MVC中,您可以使用QuickWatch检查Request对象并查看正文内容和任何已发布的表单数据。根据我的阅读,ASP.NET Web API不允许您多次读取正文。

在试图找出特定值未正确绑定的原因时,这非常烦人。如果没有设置跟踪/记录,有没有快速的方法呢?

5 个答案:

答案 0 :(得分:33)

最容易安装Fiddler。然后,您将看到通过网络发送的所有内容,不仅检查请求有效负载,还检查HTTP标头。如果您从javascript使用API​​,FireBug,Chrome开发者工具栏和IE开发者工具等内容将向您显示网站提出的所有网络请求。

如果您绝对必须检查服务器上的流量,那么如果您在ASP.NET应用程序中托管Web API,则可以将以下行放在您的即时窗口中:

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

答案 1 :(得分:3)

如果您需要正文>>形状数据

  

发布localhost:53356 / api / carparksapi / GetRecod

     

key = jsonRequest and 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

答案 2 :(得分:1)

对于ASP.NET Core,请在立即窗口中使用它:

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

答案 3 :(得分:0)

对我来说@Matas Vaitkevicius回答了

  

错误CS1061:' HttpContextBase'不包含的定义   '电流'没有扩展方法' Current'接受第一个论点   类型' HttpContextBase'可以找到(你错过了使用   指令或程序集引用?)

用System.Web.HttpContext.Current替换HttpContext.Current为我做了

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

希望这能节省你一些时间

答案 4 :(得分:0)

如果蒸汽位置在0位置,这些值中的任何一个都可以工作。

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