2010-07-20 2 views
1

Je dois fournir non répudiation dans mes services WCF et voulez stocker toutes mes demandes SOAP entrantes dans un DB de serveur SQL avec des données de signature/sécurité et toutes les choses d'enveloppe.WCF auditing/logging

De cette façon, quand un problème se produit, nous pouvons dire au client « Salut, ceci est votre message signé » exactement comme vous l'avez écrit. Pour ce faire, j'ai besoin de stocker une relation entre les XML de l'enveloppe SOAP et mes objets/transactions persistants.

Exemple: CE est le SOAP enveloppe utilisé pour ajouter ID client = 4567 à mes clients datables.

Je dois établir un lien entre l'enveloppe SOAP et la transaction commerciale effectuée par mon application. Stocker @@ identité du message enregistré pourrait être une solution. Mais, où est-ce que je le mets? Dans le corps SOAP? Gardez-le en mémoire?

J'ai lu au sujet de l'exploitation forestière dans WCF et a écrit un Database Logger qui insère dans les tables les informations du journal à la place un fichier texte, mais je ne sais pas comment lier ces données avec les analysables/désérialisés bussines DataContract objet qui arrive à la méthode de mon service WCF. Je ne sais même pas si c'est la bonne approche!

Tout modèle/conseil/conseil/outil/aide serait apprécié. Merci.

Répondre

0

Si vous avez activé la fonction de journalisation des messages de WCF (http://msdn.microsoft.com/en-us/library/ms730064.aspx), vous pouvez écrire un programme d'écoute personnalisé et y ajouter toute la logique dont vous avez besoin. Pour écrire un écouteur personnalisé, il suffit d'implémenter l'interface TraceListener (assez simple), puis de configurer WCF pour l'utiliser, en l'ajoutant à la section listeners dans system.diagnostics, en remplaçant le listener par défaut.

+0

Et comment puis-je partager des données entre le programme d'écoute et mon code d'implémentation de service? –