在我的一个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
[...]
我该怎么做? Request
和RequestContext
都不包含此数据,我找不到任何其他资源来查询此内容。
我尝试在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)答案 0 :(得分:0)
安装并运行Telerik Fiddler。这会捕获流量,解码HTTPS流量。这就是我一直用于此目的。