Using Filters for Message Logging
Cet exemple montre comment créer des filtres pour l'enregistrement des messages. Seuls les messages qui satisfont aux critères de filtre sont enregistrés, ce qui permet de réduire les données de sortie inutiles et de faciliter le débogage. Plus précisément, cet exemple montre comment filtrer en fonction de l'élément Action SOAP.
Remarque : |
---|
Cet exemple n'inclut pas code. Vous pouvez ajouter la configuration fournie dans cet exemple au fichier de configuration de votre application et observer les modifications apportées à l'enregistrement des messages dans le contexte de votre scénario. |
Filtrage dans l'enregistrement des messages
L'enregistrement des messages Windows Communication Foundation (WCF) peut être personnalisé à l'aide d'un filtre de XPath. Seuls les messages qui traversent le filtre sont enregistrés. Le filtre est défini à l'aide du langage XPath et peut être ajouté à l'élément <messageLogging> du fichier de configuration.
Le filtre répertorie les conditions auxquelles un message doit satisfaire pour être enregistré. Cet exemple montre comment enregistrer des messages avec un élément Action SOAP spécifique.
Filtrage basé sur Action
Les messages peuvent ne pas contenir nécessairement de référence de contrat ou de point de terminaison, sauf si le service ne configure pas d'élément Action personnalisé pour les opérations.
Si les actions personnalisées ne sont pas utilisées, l'élément Action inclus dans chaque message prend le format suivant.
ContractNamespace/ContractName/OperationName
ContractNamespace includes http://.
Si vous utilisez une enveloppe de version SOAP 1.2 pour le message, les messages destinés au contrat MyContractName
avec l'espace de noms MyContractNamespace
peuvent être filtrés pour l'enregistrement, tel qu'indiqué dans la configuration suivante.
<messageLogging logMessagesAtTransportLevel="true" logMessagesAtServiceLevel="true" >
<filters>
<add xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">/soap:Envelope/soap:Header/a:Action[starts-with(text(),'MyContractNamespace/MyContractName')]</add>
</filters>
</messageLogging>
L'exemple suivant montre comment ajouter un filtre qui spécifie l'espace de noms et le nom de contrat pour la demande Add de l'exemple Tracing and Message Logging.
<filters>
<add xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">/soap:Envelope/soap:Header/a:Action[starts-with(text(),'http://Microsoft.ServiceModel.Samples/ICalculator/Add')]</add>
</filters>
Si des actions personnalisées sont utilisées, l'enregistrement des messages permet de filtrer les messages à l'aide de l'action suivante.
<add xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">/soap:Envelope/soap:Header/a:Action/text()="MyAction"</add>
Pour les enveloppes de version SOAP 1.1, l'espace de noms SOAP doit être remplacé par https://schemas.xmlsoap.org/soap/envelope/
Vous devez apporter des modifications similaires pour les différentes versions d'adressage.
Pour le profil de base d'HTTP, les en-têtes ne font pas partie de l'enveloppe et sont envoyés comme en-tête HTTP. Vous devez modifier la technique de filtrage comme de manière appropriée.
Pour plus d'informations sur l'enregistrement des messages, consultez la rubrique Configuring Message Logging.
Pour configurer, générer et exécuter l'exemple
Pour exécuter cet exemple, ajoutez l'une des sections de configuration répertoriées précédemment au fichier de configuration de votre application. Les paramètres d'enregistrement des messages étant valides sur l'ensemble du domaine d'application, le filtre d'enregistrement affecte tous les messages enregistrés dans le domaine d'application.
Exécutez l'application. Notez que seuls les messages qui satisfont à la condition du filtre sont enregistrés sur le disque.
Voir aussi
Autres ressources
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.