WCF-检查MTOM编码的消息BeforeSendRequest



我正在与使用Mtom作为消息编码的第三方WCF服务集成。我已经创建了一个消息检查器行为,并且我能够通过调用request.ToString()来查看消息请求"字符串",但是,消息似乎从未被mtom编码,并且不包括任何MIME部分。我假设Mtom编码发生在通道管道的后面。我的问题是,有没有一种方法可以查看实际的传出消息,而不管编码如何,因为它将通过有线发送到WCF服务?

下面是我正在使用的消息检查器:

public class InspectorBehaviorExtensionElement : BehaviorExtensionElement
{
    public InspectorBehaviorExtensionElement()
    {
    }
    public override Type BehaviorType
    {
        get
        {
            return typeof(InspectorBehavior);
        }
    }
    protected override object CreateBehavior()
    {
        return new InspectorBehavior();
    }
}
public class InspectorBehavior : IEndpointBehavior
{
    public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters)
    {
    }
    public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
    {
        clientRuntime.MessageInspectors.Add(new MessageInspector());
    }
    public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
    {
    }
    public void Validate(ServiceEndpoint endpoint)
    {
    }
}
public class MessageInspector : IClientMessageInspector
{
    public MessageInspector()
    {
    }
    public void AfterReceiveReply(ref Message reply, object correlationState)
    {
        Debug.WriteLine("Received the following reply: '{0}'", reply);
    }
    public object BeforeSendRequest(ref Message request, IClientChannel channel)
    {
        Debug.WriteLine("Sending the following request: '{0}'", request);
        return null;
    }
}

BeforeSendRequest之后应用AFAIK消息编码。您可以使用WCF消息日志或fiddler来查看消息。

相关内容

  • 没有找到相关文章

最新更新