Come attivare la traccia WCF?


160

Aggiornare:

Ho cercato di attivare la traccia WCF , ma ancora non ci sono riuscito ... Di seguito è riportato il mio ultimo aggiornamento.

Ho bisogno di un permesso per scrivere nella posizione qui sotto?

  <system.diagnostics>
    <trace autoflush="true" />
    <sources>
      <source name="System.ServiceModel"
              switchValue="Information, ActivityTracing"
              propagateActivity="true">
        <listeners>
          <add name="sdt"
              type="System.Diagnostics.XmlWriterTraceListener"
              initializeData= "@\\myservername\folder1\traces.svclog" />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

Sto usando .NET Framework 3.5.

Quali sono le istruzioni dettagliate per attivare il tracciamento WCF a scopo di debug?

Risposte:


230

La seguente configurazione presa da MSDN può essere applicata per abilitare la traccia sul servizio WCF .

<configuration>
  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel"
              switchValue="Information, ActivityTracing"
              propagateActivity="true" >
        <listeners>
             <add name="xml"/>
        </listeners>
      </source>
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
            <add name="xml"/>
        </listeners>
      </source>
      <source name="myUserTraceSource"
              switchValue="Information, ActivityTracing">
        <listeners>
            <add name="xml"/>
        </listeners>
      </source>
    </sources>
    <sharedListeners>
        <add name="xml"
             type="System.Diagnostics.XmlWriterTraceListener"
             initializeData="Error.svclog" />
    </sharedListeners>
  </system.diagnostics>
</configuration>

Per visualizzare il file di registro, è possibile utilizzare "C: \ Programmi \ Microsoft SDKs \ Windows \ v7.0A \ bin \ SvcTraceViewer.exe".

Se "SvcTraceViewer.exe" non è presente nel tuo sistema, puoi scaricarlo dal pacchetto "Microsoft Windows SDK per Windows 7 e .NET Framework 4" qui:

Download di Windows SDK

Non è necessario installare l'intera cosa, ma solo la parte "Sviluppo / Strumenti .NET".

Quando / se esplode durante l'installazione con un errore non sensato, la risposta di Petopas al fallimento dell'installazione dell'SDK di Windows 7 ha risolto il mio problema.


18
dove vedo il file viene generato Error.svclog?
Nick Kahn,

4
Il file verrà generato nella stessa directory dell'assembly. Molto probabilmente la tua directory bin. Potrebbe essere necessario riciclare il processo di lavoro se i servizi sono ospitati in IIS.
Rohan West,

9
Assicurati che il tuo pool di applicazioni - Identity disponga dell'autorizzazione per scrivere in quella cartella. Di solito ho un account dedicato assegnato al mio pool di applicazioni, in questo modo posso concedere l'accesso in lettura / scrittura a quell'utente specifico
Rohan West

2
Nell'ambiente di sviluppo, il file Error (initializeData = "Error.svclog") è archiviato nel progetto della soluzione. La modifica in altre posizioni non ha funzionato.
LCJ,

5
Sono stato in grado di farlo accedere a una cartella usando questo: initializeData = "C: \ wcflogs \ wcf_svclog.svclog" />
Adrian Carr

32

Nel tuo web.config (sul server) aggiungi

<system.diagnostics>
 <sources>
  <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
   <listeners>
    <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="C:\logs\Traces.svclog"/>
   </listeners>
  </source>
 </sources>
</system.diagnostics>

1
ho aggiunto in questo modo poiché non ho accesso allo sviluppatore tranne la cartella initializeData="\\servername\drive$\Project\WCFTraces.svclog"/>e non vedo che il file viene generato dopo aver tentato di accedere ai servizi.
Nick Kahn,

5
Di default è buffer (potrebbe essere in grado di cambiarlo). Puoi forzare il flush riciclando il pool di app. Assicurati anche che l'identità del pool di app possa scrivere nella posizione.
Christoph,

20

Vai alla directory dei tuoi SDK Microsoft. Un percorso come questo:

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools

Apri l'Editor di configurazione WCF (Microsoft Service Configuration Editor) da quella directory:

SvcConfigEditor.exe

(un'altra opzione per aprire questo strumento è navigare in Visual Studio 2017 su "Strumenti"> "Editor di configurazione del servizio WCF")

editor di configurazione wcf

Apri il tuo file .config o creane uno nuovo usando l'editor e vai a Diagnostica.

Lì puoi fare clic su "Abilita MessageLogging".

abilita messagelogging

Ulteriori informazioni: https://msdn.microsoft.com/en-us/library/ms732009(v=vs.110).aspx

Con il visualizzatore di traccia dalla stessa directory è possibile aprire i file di registro di traccia:

SvcTraceViewer.exe

È inoltre possibile abilitare la traccia utilizzando WMI. Ulteriori informazioni: https://msdn.microsoft.com/en-us/library/ms730064(v=vs.110).aspx


2
grazie mille per avermi fatto conoscere questa utility GUI. renderà la modifica dei file di configurazione molto più semplice!
simbionte

Awesome.it mi aiuta molto a capire il Tracelog.
ksrds,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.