Comment utiliser Fiddler pour surveiller le service WCF

j'ai un service WCF qui accepte un type complexe et renvoie quelques données. Je veux utiliser Fiddler pour voir à quoi ressemblent les requêtes entrantes au service. Le client est l'application console. net qui utilise un proxy de référence de Service. Est-ce possible avec Fiddler? Je suis nouveau dans cet outil et je ne l'ai utilisé que dans le passé pour poster des données avec le constructeur de requêtes.

102
demandé sur Quadwwchs 2011-01-07 23:10:12

8 réponses

vous devez ajouter ceci dans votre web.config

<system.net>
  <defaultProxy>
    <proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" />
  </defaultProxy>
</system.net>
  1. puis Démarrer Fiddler sur la machine WEBSERVER.
  2. , Cliquez sur Outils | Fiddler Options => Connexions => ajuster le port 8888.(distance, si vous avez besoin d')
  3. Ok, puis à partir du menu Fichier, capturez le trafic.

c'est tout, mais n'oubliez pas de supprimer le web.lignes de configuration après la fermeture du fiddler, parce que si vous ne pas il va faire une erreur.

référence: http://fiddler2.com/documentation/Configure-Fiddler/Tasks/UseFiddlerAsReverseProxy

139
répondu Tarek El-Mallah 2013-07-22 15:44:44

Fiddler écoute les requêtes sortantes plutôt que les requêtes entrantes de sorte que vous n'allez pas être en mesure de surveiller toutes les requêtes entrant dans votre service en utilisant Fiddler.

le mieux que vous obtiendrez avec Fiddler est la possibilité de voir toutes les requêtes générées par votre application Console (en supposant que l'application génère des requêtes web plutôt qu'en utilisant un autre pipeline).

Si vous voulez un outil qui est plus puissant (mais plus difficile à utiliser) qui vous permettra de surveiller TOUTES les demandes entrantes, vous devriez vérifier WireShark.

Modifier

je corrige. Merci à Eric Law pour avoir posté les instructions pour configurer Fiddler pour être un mandataire inversé !

8
répondu Justin Niessner 2013-07-17 15:19:01

vient D'avoir ce problème, ce qui a fonctionné pour moi était d'utiliser localhost.fiddler:

 <endpoint address="http://localhost.fiddler/test/test.svc"
            binding="basicHttpBinding" 
            bindingConfiguration="customBinding" 
            contract="test" 
            name="customBinding"/>
8
répondu L-Four 2014-05-05 12:31:18

Consolider les mises en garde mentionnées dans les commentaires/réponses pour plusieurs cas d'utilisation.

la Plupart du temps, voir http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureDotNETApp

  • Démarrer Fiddler avant que votre application
  • dans une application de console, vous pourriez ne pas avoir à spécifier le proxyaddress :

    <proxy bypassonlocal="False" usesystemdefault="True" />
    
  • dans un web application / quelque chose hébergé dans IIS, vous devez ajouter le proxyaddress :

    <proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" />
    
  • quand .NET fait une demande (par l'intermédiaire d'un client de service ou HttpWebRequest , etc), il court-circuite toujours le proxy Fiddler pour les URLs contenant localhost , vous devez donc utiliser un alias comme le nom de la machine ou créer quelque chose dans votre fichier 'hosts' (c'est pourquoi quelque chose comme localhost.fiddler ou http://HOSTNAME fonctionne)
  • si vous spécifiez proxyaddress , vous devez le supprimer de votre configuration si Fiddler n'est pas activé, ou toute requête faite par votre application fera une exception comme:

    aucune connexion n'a pu être faite parce que la machine cible a activement refusé it 127.0.0.1: 8888

  • N'oubliez pas d'utiliser config transformations supprimer le proxy de la section de la production
6
répondu drzaus 2015-11-18 17:02:30

si simple, tout ce dont vous avez besoin est de changer l'adresse dans le client de configuration: au lieu de "localhost" changer le nom de la machine ou L'IP

4
répondu Ziv.Ti 2013-07-30 13:48:01

c'est simple si vous avez le contrôle sur le client qui envoie les communications. Tout ce que vous avez à faire est de configurer le HttpProxy sur la classe de service côté client.

j'ai fait ceci, par exemple, pour tracer un client de service web tournant sur un smartphone. J'ai placé le proxy sur cette connexion côté client à L'IP/port de Fiddler, qui fonctionnait sur un PC sur le réseau. L'application smartphone a ensuite envoyé toute sa communication sortante au service web, par Fiddler.

cela a fonctionné parfaitement.

si votre client est un client de la FMC, lisez cette Q&R pour savoir comment définir le mandataire.

même si vous n'avez pas la possibilité de modifier le code de l'application côté client, vous pouvez être en mesure de définir le proxy administrativement, en fonction de la pile de services web que votre client utilise.

1
répondu Cheeso 2017-05-23 12:26:10

j'ai utilisé Wire shark outil pour le suivi des appels de service de silver light app dans le navigateur à service. essayez le lien donne des informations claires

il vous permet de surveiller l'ensemble du contenu de la requête et de la réponse.

0
répondu DiAgo 2013-07-23 11:32:15

Standard de la WCF de suivi/Diagnostics

si, pour une raison quelconque, vous n'êtes pas en mesure de faire fonctionner Fiddler, ou si vous préférez enregistrer les requêtes d'une autre manière, une autre option est d'utiliser la fonctionnalité standard de traçage WCF. Cela va produire un fichier qui a un téléspectateur agréable.

Docs

voir https://docs.microsoft.com/en-us/dotnet/framework/wcf/samples/tracing-and-message-logging

Configuration

ajoutez ce qui suit à votre configuration, assurez-vous que c:\logs existe, reconstruisez, et faites des requêtes:

  <system.serviceModel>
    <diagnostics>
      <!-- Enable Message Logging here. -->
      <!-- log all messages received or sent at the transport or service model levels -->
      <messageLogging logEntireMessage="true"
                      maxMessagesToLog="300"
                      logMessagesAtServiceLevel="true"
                      logMalformedMessages="true"
                      logMessagesAtTransportLevel="true" />
    </diagnostics>
  </system.serviceModel>

  <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>
    </sources>
    <sharedListeners>
      <add initializeData="C:\logs\TracingAndLogging-client.svclog" type="System.Diagnostics.XmlWriterTraceListener"
        name="xml" />
    </sharedListeners>
    <trace autoflush="true" />
  </system.diagnostics>
0
répondu seth flowers 2018-03-13 15:47:39