Diagnosticando requisições no socket FTP/Requisições HTTP

Visão Geral

Quando trabalhamos com requisições via rede existem muitas variantes para uma mesma situação, então para concluirmos a elaboração de uma solução precisamos de informações como logs, mensagens de erros, contexto de ocorrência, etc.

Porém, nem sempre iremos nos dispor de uma gama grande de ferramentas, que nos possibilitem precisão na solução criada. Pode ocorrer cenário onde não temos mensagem de erro, ou logs de requisição, ou não sabemos o cenário que disparou a situação apresentada.

A seguir disponibilizarei um trecho de código que pode ser uma grande arma para conseguir novas informações sobre a situação alvo de investigação.

Interceptando requisições no socket de rede (Ex.: FTP, HTTP, etc)

Para poder interceptar uma requisição, que ocorre no socket de erro podemos usar uma das ferramentas disponíveis na caixa de ferramentas do .Net Framework, a biblioteca system.diagnostic, que pode ser adicionada no web.config, para que, um contexto seja englobado na execução do Pool de aplicação do IIS.

Ao adicionar o trecho de código abaixo no arquivo web.config de um site, podemos gerar um arquivo de log com uma grande quantidade de informação das requisições que ocorreram no contexto da biblioteca System.Net.

<system.diagnostics>
  <trace autoflush="true" />
  <sources>
    <source name="System.Net" switchValue="Verbose">
      <listeners>
        <add name="System.NetTrace" type="System.Diagnostics.TextWriterTraceListener"
          initializeData="C:\Temp\Logs\FtpRequestTrace.log" />
      </listeners>
    </source>
  </sources>
</system.diagnostics>
Quando ocorrer uma atualização no LATROMI o arquivo web.config será modificado para a versão da atualização, portanto, alterações feitas manualmente no arquivo podem ser perdidas.

Referência