Dans mon application, j'appelle un service Web et en utilisant SoapExtension et SoapExtensionAttribute, je peux intercepter les messages SOAP entrants et sortants à des fins de consignation. J'ai utilisé l'exemple dans http://msdn.microsoft.com/en-us/magazine/cc164007.aspx en entrée. Mais maintenant je veux aller un peu plus loin. J'ai un client Windows qui appelle ma classe (dans un projet séparé) et la classe appelle ensuite le service Web. Je peux maintenant intercepter les messages SOAP, mais au lieu de les journaliser directement dans un fichier, je veux renvoyer ces messages à ma classe qui appelle le service Web et aussi au client qui appelle ma classe. Ce sont les changements de code que je l'ai fait jusqu'à présent:Transmettre des informations à l'objet sur lequel un SoapExtensionAttribute est appliqué
private String ExtractFromStream(Stream target)
{
if (target != null)
return (new StreamReader(target)).ReadToEnd();
return "";
}
public void WriteOutput(SoapMessage message)
{
newStream.Position = 0;
string soapOutput = ExtractFromStream(newStream);
newStream.Position = 0;
Copy(newStream, oldStream);
}
public void WriteInput(SoapMessage message)
{
Copy(oldStream, newStream);
newStream.Position = 0;
string soapInput= ExtractFromStream(newStream);
newStream.Position = 0;
}
Je veux maintenant passer le soapInput et soapOutput à la classe qui détient la méthode que cet attribut est appliqué. Des indices sur comment je devrais faire ça?