2017-04-12 6 views
3

In einem meinem WebAPI Controller, würde Ich mag die ursprüngliche rohe HTTP-Anforderung, um zu sehen, die durch den Client gesendet wurden (wie das Material, das Sie auf http://web-sniffer.net/ sehen):# WebAPI C - Erhalten Sie volle HTTP-Anforderung

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 
[...] 

Wie kann ich das tun? Sowohl Request als auch RequestContext enthalten diese Daten nicht und ich habe keine andere Ressource für diesen Inhalt gefunden.

Ich habe versucht, nach ähnlichen Fragen zu SO, aber nur Fragen für rohe Inhalte oder (wenn voll HTML) für Java gefunden.

Im Hinterkopf habe ich eine kleine Erinnerung diesbezüglich in Kombination mit der FilterConfig.cs, aber leider nichts spezifisch genug. Und mit etwas Glück weiß jemand, der besser informiert ist als ich, einen Weg, diese Information direkt zu bekommen.

Edit:

Es scheint, dass es unmöglich ist, die rohe HTTP-Anforderung direkt zu erfassen. Nach dem Lesen der verknüpften Antworten scheint es, dass ich die Anfrage aus mehreren Feldern neu erstellen muss.

Nach dem Link von Jeffs Kommentar in seiner Antwort, ich habe die ursprüngliche Anfrage von einem Bündel von analysierten Feldern neu zu erstellen:

  • HttpContext.Current.Request.HttpMethod + .Url + .ServerVariables["SERVER_PROTOCOL"] für die Startlinie.
  • HttpContext.Current.Request.ServerVariables["ALL_RAW"] für die Header
  • Request.Content.ReadAsStreamAsync().Result (vergessen Sie nicht suchen 0 vor dem Lesen zu positionieren) für den Inhalt
+0

Diese 1 Zeile löst Ihr Problem var data = Request.Headers; –

+0

@DanEsparza Die Antwort, die Sie verknüpft haben (14967457), hilft nicht. Die Antwort von Jeff Davies in seiner Antwort auf seine Antwort (1038466) hat mich auf den richtigen Weg gebracht. Bitte entferne oder bearbeite deinen Duplikatmarker, damit er beim Lesen nicht andere auf eine falsche Antwort (auf meine Frage) verführt. – MilConDoin

Antwort

0

Installieren und starten Sie Telerik Fiedler. Dies erfasst den Verkehr und dekodiert HTTPS-Verkehr. Es ist, was ich die ganze Zeit für diesen Zweck verwende.

+3

Ich denke, das OP will eine Codelösung. – Luke

+1

in diesem Fall, ich denke, diese Frage ist ein Duplikat davon: http://StackOverflow.com/Questions/1038466/Logging-Raw-http-Request-Response-in-Asp-Netz-MVC-iis7 –

Verwandte Themen