如何在 Visual Studio 中查看 ASP.NET Web API 中的请求正文?在 ASP.NET MVC 中,您可以使用 QuickWatch 检查Request
对象并查看正文内容和任何已发布的表单数据。根据我的阅读,ASP.NET Web API 不允许您多次阅读正文。
当试图弄清楚为什么一个特定的值没有正确绑定时,这是非常烦人的。有没有一种快速的方法可以在不设置跟踪/日志记录的情况下做到这一点?
如何在 Visual Studio 中查看 ASP.NET Web API 中的请求正文?在 ASP.NET MVC 中,您可以使用 QuickWatch 检查Request
对象并查看正文内容和任何已发布的表单数据。根据我的阅读,ASP.NET Web API 不允许您多次阅读正文。
当试图弄清楚为什么一个特定的值没有正确绑定时,这是非常烦人的。有没有一种快速的方法可以在不设置跟踪/日志记录的情况下做到这一点?
最容易安装Fiddler
。然后,您将看到通过网络发送的所有内容,并不仅检查请求有效负载,还检查 HTTP 标头。如果您从 javascript 中使用 API,FireBug、Chrome 开发者工具栏和 IE 开发者工具之类的东西会向您显示网站发出的所有网络请求。
如果您绝对必须检查服务器上的流量,那么如果您在 ASP.NET 应用程序中托管您的 Web API,您可以在您的即时窗口中放入以下行:
new StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd()
如果您需要正文 >> 表单数据
发布本地主机:53356/api/carparksapi/GetRecod
key=jsonRequest 和 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
对于 ASP.NET Core,在即时窗口中使用:
new System.IO.StreamReader(Request.Body).ReadToEnd()
对我来说@DarinDimitrov 给出了答案
错误 CS0246:找不到类型或命名空间名称“StreamReader”(您是否缺少 using 指令或程序集引用?)
添加命名空间做到了
new System.IO.StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd()
希望这可以节省您一些时间
对我来说@Matas Vaitkevicius 的回答给了
错误 CS1061:“HttpContextBase”不包含“Current”的定义,并且找不到接受“HttpContextBase”类型的第一个参数的扩展方法“Current”(您是否缺少 using 指令或程序集引用?)
用 System.Web.HttpContext.Current 替换 HttpContext.Current 为我做了
new System.IO.StreamReader(System.Web.HttpContext.Current.Request.InputStream).ReadToEnd()
希望这可以节省您一些时间
如果蒸汽的位置在位置 0,这些答案中的任何一个都可以工作。
HttpContext.Current.Request.InputStream.Position = 0;
var body = new StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd();