2010-01-13 39 views
0

我正在尝试记录正在发送和接收的原始SOAP消息。我有一个SoapExtension,一切正常工作正常,但有一个问题,但。我们使用WS-DeathStars的加密和消息签名,因此记录的内容是加密的SOAP消息。我需要的是找到一种方法,在消息解密扩展之后和消息加密例程之前立即插入我的SoapExtension。我怎么做?在WSE中记录未加密的SOAP消息

回答

0

好的,我明白了。这可以通过实施自定义SoapFilter来解决,这应该是过滤链中的第一个:

public class TraceAssertion : PolicyAssertion 
{ 
    public override SoapFilter CreateClientInputFilter(FilterCreationContext context) 
    { 
     return new SoapTraceFilter(); 
    } 

    public override SoapFilter CreateClientOutputFilter(FilterCreationContext context) 
    { 
     return new SoapTraceFilter(); 
    } 

    public override SoapFilter CreateServiceInputFilter(FilterCreationContext context) 
    { 
     return null; 
    } 

    public override SoapFilter CreateServiceOutputFilter(FilterCreationContext context) 
    { 
     return null; 
    } 
} 

public class SoapTraceFilter : SoapFilter 
{ 
    public override SoapFilterResult ProcessMessage(SoapEnvelope envelope) 
    { 
     envelope.Save("c:\\log\\" + DateTime.Now.Ticks + ".soap.xml"); 
     return SoapFilterResult.Continue; 
    } 
}