私のアプリケーションでは、Webサービスを呼び出しており、SoapExtensionとSoapExtensionAttributeを使用して、ログ記録の目的で着信および発信のSOAPメッセージをインターセプトできます。http://msdn.microsoft.com/en-us/magazine/cc164007.aspxの例を入力として使用しました。しかし今、私はさらに一歩進んでいきたいと思います。(別のプロジェクトで)クラスを呼び出すWindowsクライアントがあり、クラスがWebサービスを呼び出します。これでSOAPメッセージをインターセプトできますが、それらをファイルに直接ログに記録する代わりに、それらのメッセージをWebサービスを呼び出しているクラスに戻し、クラスを呼び出しているクライアントにも戻したいと思います。これまでに行ったコードの変更は次のとおりです。
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;
}
ここで、soapInputとsoapOutputを、この属性が適用されるメソッドを保持するクラスに戻したいと思います。私がそれをどのようにすべきかについての手がかりはありますか?