Wie sehe ich die HTTP-Rohanforderung, die die HttpWebRequest-Klasse sendet?

Ich weiß, dass Sie alle antworten werden "benutze einen Debug-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 ausgeführt wird (aspx.cs), die (unter anderem) eine Verbindung zu @ herstellEin weitere server, greift nach etwas und formatiert es anschließend 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 @ ausgedruckt wirkomplett roh HTTP-Anfrage, dass es an den anderen Server sendet, damit ich sehen kann, was zum Teufel ist. Dieser Code wird an mehreren Stellen ausgeführt, daher möchte ich in der Lage sein, nur dieses Flag für dev, Staging oder Production zu übergeben und nur die Anforderung anzuzeigen, ohne herauszufinden, ob die Produktionsserver mit einem irgendwo vorhandenen Proxyserver kommunizieren können , etc

Du würdest denken, dass es einfach wäre, das zu tun, oder? Ich fühle mich also wie 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, dass Microsoft daran gedacht hätte. Das Nächste ist, dass Sie auf die "Header" -Sammlung zugreifen können, aber als ich es ausprobierte, wurden einige wirklich wichtige Header wie "content length" weggelassen - also muss es für mich "lügen" (ich weiß, es lügt, weil ich weiß) für eine Tatsache, dass der Remote-Server einen 200-Status zurückgibt - die Anforderung ist erfolgreich, es werden nur fehlerhafte / unterschiedliche / 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();

Antworten auf die Frage(16)

Ihre Antwort auf die Frage