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?

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.


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>

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


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.