Como vejo a solicitação HTTP bruta que a classe HttpWebRequest envia?

Eu sei que todos vocês vão responder "use um servidor proxy de depuração como o Fiddler", mas não é tão simples assim.

Aqui está minha situação: Eu tenho um código que é executado em um servidor, em uma página ASP.NET code-behind (aspx.cs), que (entre outras coisas) estabelece uma conexão comoutro servidor, pega algumas coisas e as formata e retorna para o navegador.

O problema é que o outro servidor está fazendo a coisa errada e, por isso, desejo passar um sinalizador de depuração para a página (por meio da string de consulta, por exemplo? Debug = true), para que ele imprima ocompletamente cru Solicitação HTTP que ele está enviando para o outro servidor para que eu possa ver o que diabos está errado. Esse código está sendo executado em vários lugares, então eu quero poder passar esse sinalizador no dev, staging ou production e apenas ver a solicitação, sem precisar descobrir se os servidores de produção podem conversar com algum servidor proxy que existe em algum lugar , etc.

Você pensaria que seria fácil fazer isso, certo? Então, eu sinto que sou louco ou algo assim, mas olhei a referência para HttpWebRequest e sua classe pai WebRequest e - nada. Não pode fazer. Você pensaria que a Microsoft teria pensado nisso. O mais próximo é que você pode acessar a coleção "Headers", mas quando tentei, ela omitiu alguns cabeçalhos realmente importantes, como "tamanho do conteúdo" - portanto, deve estar "mentindo" para mim (eu sei que está mentindo, porque eu sei pelo fato de o servidor remoto estar retornando um status 200 - a solicitação foi bem-sucedida, está retornando dados ruins / diferentes / incorretos)

Aqui está o exemplo de código solicitado:

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();

questionAnswers(8)

yourAnswerToTheQuestion