在我的WebAPI控制器之一,我倒要看看這是由客戶端(如東西,你可以在http://web-sniffer.net/看到)發送的原生HTTP請求:C#的WebAPI - 獲取完整的HTTP請求
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上搜索類似的問題,但只發現了Java的原始內容或(如果是完整的html)的問題。
在我的腦海裏,我有一個關於這個與FilterConfig.cs
相結合的小內存,但遺憾的是沒有足夠的具體內容。幸運的是,有人比我更懂得知道直接獲取這些信息的方法。
編輯:
看來,這是不可能直接採集原始的HTTP請求。在閱讀鏈接的答案之後,我似乎必須從幾個字段重建請求。
據他回答傑夫的評論的鏈接,我必須重建從一堆解析領域的原始請求:爲起始行
HttpContext.Current.Request.HttpMethod
+.Url
+.ServerVariables["SERVER_PROTOCOL"]
。HttpContext.Current.Request.ServerVariables["ALL_RAW"]
爲標題Request.Content.ReadAsStreamAsync().Result
(不要忘記尋求讀之前位置0)的內容
這1行將解決您的問題var data = Request.Headers; –
@DanEsparza你鏈接到的答案(14967457)不起作用。傑夫戴維斯在他的回答(1038466)中提出的答案使我走上了正確的軌道。請刪除或編輯您的重複標記,以免讀者在閱讀本文時誤導他人錯誤地回答(對我的問題)。 – MilConDoin