Wie aktiviere ich die WCF-Ablaufverfolgung?

160

Aktualisieren:

Ich habe versucht, die WCF- Ablaufverfolgung zu aktivieren, aber immer noch keinen Erfolg ... Unten ist mein letztes Update.

Benötige ich eine Erlaubnis, um an den unten angegebenen Ort zu schreiben?

  <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>

Ich verwende .NET Framework 3.5.

Wie lautet die schrittweise Anleitung zum Aktivieren der WCF-Verfolgung für Debugging-Zwecke?

Nick Kahn
quelle

Antworten:

230

Die folgende Konfiguration aus MSDN kann angewendet werden, um die Ablaufverfolgung für Ihren WCF- Dienst zu aktivieren .

<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>

Zum Anzeigen der Protokolldatei können Sie "C: \ Programme \ Microsoft SDKs \ Windows \ v7.0A \ bin \ SvcTraceViewer.exe" verwenden.

Wenn sich "SvcTraceViewer.exe" nicht auf Ihrem System befindet, können Sie es hier aus dem Paket "Microsoft Windows SDK für Windows 7 und .NET Framework 4" herunterladen:

Windows SDK herunterladen

Sie müssen nicht das gesamte Ding installieren, sondern nur den Teil ".NET Development / Tools".

Wenn / wenn es während der Installation mit einem unsinnigen Fehler ausbricht , hat Petopas 'Antwort auf den Windows 7 SDK-Installationsfehler mein Problem behoben.

Rohan West
quelle
18
Wo sehe ich, dass die Datei generiert wird Error.svclog?
Nick Kahn
4
Die Datei wird im selben Verzeichnis wie Ihre Assembly generiert. Höchstwahrscheinlich Ihr bin-Verzeichnis. Möglicherweise müssen Sie den Arbeitsprozess recyceln, wenn Ihre Dienste in IIS gehostet werden.
Rohan West
9
Stellen Sie sicher, dass Ihr Anwendungspool - Identität die Berechtigung zum Schreiben in diesen Ordner hat. Normalerweise ist meinem Anwendungspool ein dediziertes Konto zugewiesen. Auf diese Weise kann ich diesem bestimmten Benutzer Lese- / Schreibzugriff gewähren
Rohan West,
2
In der Entwicklungsumgebung wird die Fehlerdatei (initializeData = "Error.svclog") im Lösungsprojekt gespeichert. Das Ändern an einen anderen Ort hat nicht funktioniert.
LCJ
5
Ich konnte es dazu bringen, sich in einem Ordner zu protokollieren, indem ich Folgendes verwendete: initializeData = "C: \ wcflogs \ wcf_svclog.svclog" />
Adrian Carr
32

Fügen Sie in Ihrer web.config (auf dem Server) hinzu

<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>
Christoph
quelle
1
Ich habe wie initializeData="\\servername\drive$\Project\WCFTraces.svclog"/>folgt hinzugefügt, da ich außer dem Ordner keinen Zugriff auf den Entwickler habe und nicht sehe, dass die Datei generiert wird, nachdem ich versucht habe, auf die Dienste zuzugreifen.
Nick Kahn
5
Standardmäßig ist es gepuffert (kann dies möglicherweise ändern). Sie können das Spülen erzwingen, indem Sie den App-Pool recyceln. Stellen Sie außerdem sicher, dass die App-Pool-Identität in den Speicherort schreiben kann.
Christoph
20

Wechseln Sie in Ihr Microsoft SDK-Verzeichnis. Ein Weg wie dieser:

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

Öffnen Sie den WCF-Konfigurationseditor (Microsoft Service Configuration Editor) in diesem Verzeichnis:

SvcConfigEditor.exe

(Eine weitere Option zum Öffnen dieses Tools besteht darin, in Visual Studio 2017 zu "Tools"> "WCF Service Configuration Editor" zu navigieren.)

wcf Konfigurationseditor

Öffnen Sie Ihre .config-Datei oder erstellen Sie mit dem Editor eine neue und navigieren Sie zu Diagnose.

Dort können Sie auf "MessageLogging aktivieren" klicken.

Messagelogging aktivieren

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

Mit dem Trace-Viewer aus demselben Verzeichnis können Sie die Trace-Protokolldateien öffnen:

SvcTraceViewer.exe

Sie können die Ablaufverfolgung auch über WMI aktivieren. Weitere Informationen: https://msdn.microsoft.com/en-us/library/ms730064(v=vs.110).aspx

juFo
quelle
2
Vielen Dank, dass Sie mir dieses GUI-Dienstprogramm vorgestellt haben. Dies erleichtert das Bearbeiten der Konfigurationsdateien erheblich!
Symbiont
Awesome.it hilft mir sehr, den Tracelog zu verstehen.
ksrds
1

Anstatt das Tracing-Aktivierungsbit manuell in web.config hinzuzufügen, können Sie auch den WCF-Konfigurationseditor verwenden, der mit dem VS SDK geliefert wird, um die Tracing-Funktion zu aktivieren

https://stackoverflow.com/a/16715631/2218571

CSharped
quelle