Comment activer le traçage WCF?

160

Mettre à jour:

J'ai essayé d'activer le traçage WCF , mais toujours sans succès ... Voici ma dernière mise à jour.

Ai-je besoin d'une autorisation pour écrire à l'emplacement ci-dessous?

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

J'utilise .NET Framework 3.5.

Quelle est l'instruction étape par étape pour activer le suivi WCF à des fins de débogage?

Nick Kahn
la source

Réponses:

230

La configuration suivante extraite de MSDN peut être appliquée pour activer le traçage sur votre service 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>

Pour afficher le fichier journal, vous pouvez utiliser "C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ bin \ SvcTraceViewer.exe".

Si "SvcTraceViewer.exe" n'est pas sur votre système, vous pouvez le télécharger à partir du package "Microsoft Windows SDK pour Windows 7 et .NET Framework 4" ici:

Téléchargement du SDK Windows

Vous n'avez pas à installer le tout, juste la partie "Développement .NET / Outils".

Quand / si cela bombarde pendant l'installation avec une erreur non sensible, la réponse de Petopas à l' échec de l'installation du SDK Windows 7 a résolu mon problème.

Rohan Ouest
la source
18
où est-ce que je vois que le fichier est généré Error.svclog?
Nick Kahn
4
Le fichier sera généré dans le même répertoire que votre assembly. Très probablement votre répertoire bin. Vous devrez peut-être recycler le processus de travail si vos services sont hébergés dans IIS.
Rohan West
9
Assurez-vous que votre pool d'applications - Identité est autorisé à écrire dans ce dossier. J'ai généralement un compte dédié attribué à mon pool d'applications, de cette façon, je peux accorder un accès en lecture / écriture à cet utilisateur spécifique
Rohan West
2
Dans l'environnement de développement, le fichier d'erreur (initializeData = "Error.svclog") est stocké dans le projet de solution. Le changer à d'autres emplacements n'a pas fonctionné.
LCJ
5
J'ai pu le faire enregistrer dans un dossier en utilisant ceci: initializeData = "C: \ wcflogs \ wcf_svclog.svclog" />
Adrian Carr
32

Dans votre web.config (sur le serveur) ajoutez

<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
la source
1
J'ai ajouté comme ça car je n'ai pas accès au dev sauf le dossier initializeData="\\servername\drive$\Project\WCFTraces.svclog"/>et je ne vois pas que ce fichier est généré après avoir essayé d'accéder aux services.
Nick Kahn
5
Par défaut, il est mis en mémoire tampon (peut être en mesure de changer cela). Vous pouvez le forcer à se vider en recyclant le pool d'applications. Assurez-vous également que l'identité du pool d'applications peut écrire dans l'emplacement.
Christoph
20

Accédez à votre répertoire Microsoft SDK. Un chemin comme celui-ci:

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

Ouvrez l'éditeur de configuration WCF (éditeur de configuration de service Microsoft) à partir de ce répertoire:

SvcConfigEditor.exe

(une autre option pour ouvrir cet outil consiste à naviguer dans Visual Studio 2017 vers «Outils»> «Éditeur de configuration de service WCF»)

éditeur de configuration wcf

Ouvrez votre fichier .config ou créez-en un nouveau à l'aide de l'éditeur et accédez à Diagnostics.

Là, vous pouvez cliquer sur "Activer MessageLogging".

activer la messagerie

Plus d'informations: https://msdn.microsoft.com/en-us/library/ms732009(v=vs.110).aspx

Avec la visionneuse de trace du même répertoire, vous pouvez ouvrir les fichiers journaux de trace:

SvcTraceViewer.exe

Vous pouvez également activer le traçage à l'aide de WMI. Plus d'informations: https://msdn.microsoft.com/en-us/library/ms730064(v=vs.110).aspx

juFo
la source
2
merci beaucoup de m'avoir présenté cet utilitaire GUI. cela rendra l'édition des fichiers de configuration beaucoup plus facile!
symbiont
Awesome.it m'aide beaucoup à comprendre le Tracelog.
ksrds
1

Au lieu d'ajouter manuellement le bit d'activation du traçage dans web.config, vous pouvez également essayer d'utiliser l'éditeur de configuration WCF fourni avec VS SDK pour activer le traçage

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

CSharpé
la source