C#WebAPI - 获取完整的HTTP请求

时间:2017-04-12 12:32:12

标签: c# asp.net-web-api

在我的一个WebAPI控制器中,我希望看到客户端发送的原始HTTP请求(就像您在http://web-sniffer.net/上看到的那样):

POST / HTTP/1.1
Host: www.some.host.tld
Connection: keep-alive
Accept-Encoding: gzip[CRLF]
Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7
field1=FIELD1&field2=FIELD2
Content-type: application/x-www-form-urlencoded
[...]

我该怎么做? RequestRequestContext都不包含此数据,我找不到任何其他资源来查询此内容。

我尝试在SO上搜索类似的问题,但只找到了原始内容或(如果是完整的HTML)Java的问题。

在我的脑海里,我与FilterConfig.cs结合起来有一个很小的记忆,但遗憾的是没有什么特别的。幸运的是,一个比我更了解的人甚至知道直接获取这些信息的方法。

修改

似乎无法直接捕获原始HTTP请求。阅读链接的答案后,似乎我必须从几个字段重建请求。

根据Jeff在回答中的评论链接,我必须从一堆解析字段重建原始请求:

  • HttpContext.Current.Request.HttpMethod + .Url + .ServerVariables["SERVER_PROTOCOL"]作为起始行。
  • HttpContext.Current.Request.ServerVariables["ALL_RAW"]用于标题
  • 内容
  • Request.Content.ReadAsStreamAsync().Result(不要忘记在阅读前寻找位置0)

1 个答案:

答案 0 :(得分:0)

安装并运行Telerik Fiddler。这会捕获流量,解码HTTPS流量。这就是我一直用于此目的。