Ich weiß, dass Sie alle antworten werden "Verwenden Sie einen Debugging-Proxy-Server wie Fiddler", aber es ist nicht so einfach.
Hier ist meine Situation: Ich habe Code, der auf einem Server in einer ASP.NET-Seite Code-Behind (aspx.cs) ausgeführt wird, der (unter anderem) eine Verbindung zu einem anderen Server herstellt, einige Dinge abruft und diese dann formatiert und gibt es an den Browser zurück.
Das Problem ist, dass der andere Server das Falsche tut und ich daher in der Lage sein möchte, ein Debugging-Flag an die Seite zu übergeben (über die Abfragezeichenfolge, z. B.? Debug = true), damit das vollständig rohe HTTP ausgedruckt wird Bitten Sie darum, dass es an den anderen Server gesendet wird, damit ich sehen kann, was zum Teufel falsch ist. Dieser Code wird an mehreren Stellen ausgeführt, daher möchte ich dieses Flag nur für Entwickler, Staging oder Produktion übergeben und nur die Anforderung anzeigen können, ohne herausfinden zu müssen, ob die Produktionsserver mit einem irgendwo vorhandenen Proxyserver kommunizieren können , usw.
Sie würden denken, dass es einfach wäre, dies zu tun, oder? Ich fühle mich also verrückt oder so, aber ich habe mir die Referenz für HttpWebRequest und die übergeordnete Klasse WebRequest angesehen und - nichts. Geht nicht. Sie würden denken, Microsoft hätte daran gedacht. Das Nächste ist, dass Sie auf die "Headers" -Sammlung zugreifen können, aber als ich es ausprobiert habe, wurden einige wirklich wichtige Header wie "content length" weggelassen - also muss es mich "anlügen" (ich weiß, dass es lügt, weil ich es weiß für die Tatsache, dass der Remote-Server einen 200-Status zurückgibt - die Anforderung ist erfolgreich, es werden nur schlechte / andere / falsche Daten zurückgegeben)
Hier ist das angeforderte Codebeispiel:
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.whatever.com");
req.Method = ... whatever ...;
... other setup for the request ...
/* At this point we are about to send the request.
What does the raw HTTP request look like? */
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();