Páginas

terça-feira, 17 de maio de 2011

Habilitar Trace no WCF (System.Diagnostics)

Muitas vezes nos deparamos com alguns problemas no WCF que de primeira não conseguimos entender ou diagnosticar e acabamos demorando horas e horas pesquisando por um erro que na verdade não é o REAL erro.

Diante de minha experiência, percebi que O WCF tem o comportamento de encapsular (se é assim que posso dizer) o erro original e nos enviar um erro genérico.

Mas com a ajuda do System.Diagnostics, podemos realizar o trace das chamadas do serviço e identificar o real problema. (Esta configuração pode ser adicionada tanto no client como no host do WCF.)

Adicione a configuração abaixo dentro da tag configuration do arquivo de configuração e realize a chamada que está retornando um erro.
<system.diagnostics>
  <sources>
    <source name="System.ServiceModel" switchValue="Verbose,ActivityTracing" propagateActivity="true">
      <listeners>
        <add type="System.Diagnostics.DefaultTraceListener" name="Default" />
        <add name="xml" />
      </listeners>
    </source>
  </sources>
  <sharedListeners>
    <add initializeData="c:\temp\WCFTrace.svclog"
      type="System.Diagnostics.XmlWriterTraceListener" name="xml"
      traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack" />
  </sharedListeners>
  <trace autoflush="true" />
</system.diagnostics>

Com esta configuração, será gerado um arquivo com a extensão svclog (vide linha 11 da configuração). Esta extensão é conhecida pelo software Microsoft Service Trace Viewer que vem junto na suite do Microsoft Visual Studio 2010.

Ao abrir o arquivo svclog, o software (Trace Viewer) será aberto contendo na esquerda as atividades realizadas na chamada do serviço.

Procure alguma atividade que esteja na cor vermelha, que significa atividade com erros, e selecione.

No lado direito aparecerá uma lista com as ações feitas naquela atividade. Procure nesta lista os itens com a cor vermelha (erros) e selecione.

Ao selecionar, na parte inferior aparecerão os detalhes da ação selecionada, vá até a seção Exception e navegue pela Exception Tree até a última exception e verifique logo abaixo a mensagem original de erro.


ATENÇÃO: Não deixe esta configuração habilitada pois o arquivo gerado pode crescer rapidamente, visto que o trace realiza um append no arquivo.

0 comentários:

Postar um comentário