你的扩展类有问题:
public override void ProcessMessage(SoapMessage message)
{
switch (message.Stage)
{
case SoapMessageStage.BeforeSerialize:
break;
case SoapMessageStage.AfterSerialize:
Print(message);
break;
case SoapMessageStage.BeforeDeserialize:
Print(message);
break;
case SoapMessageStage.AfterDeserialize:
break;
default:
throw new Exception("invalid stage");
}
}
没有任何问题
关键在于你的Print()方法和public override Stream ChainStream(Stream stream)
有问题,你从运行结果也看出来了,SoapMessage并不是在任意时刻都可读的,
public override Stream ChainStream(Stream stream)
这个方法中的stream对象是可以访问的
所以你应该在此方法中将stream暂时保存下来,来替换Print中的message.Stream
具体你可以参考
http://www.cnblogs.com/jillzhang/archive/2007/05/25/758342.html