Vous pouvez créer un SoapExtensionAttribute et l'appliquer à vos méthodes de service web.
Créez une classe qui est dérivée de SoapExtensionAttribute.
Créez une autre classe qui dérive de SoapExtension.
Le Type de votre SoapExtensionAttribute doit être le type de votre SoapExtension.
Une fois que vous êtes dans la SoapExtension, vous avez accès au moment où les données ont été sérialisées/désérialisées.
Voici les 4 étapes spécifiques :
SoapMessageStage.BeforeSerialize
SoapMessageStage.AfterSerialize *
SoapMessageStage.BeforeDeserialize *
SoapMessageStage.AfterDeserialize
Les étapes marquées d'un astérisque (*) sont celles où vous souhaitez accéder au flux. A partir de là, vous pouvez enregistrer le xml qui entre et sort de votre service web.
C'est ce que nous faisons ici, cela fonctionne parfaitement.
Voici un lien qui explique plus en détail : http://progtutorials.tripod.com/soapext.htm
J'espère que cela vous a aidé.