2012-04-04 4 views
0

Я интегрируюсь со сторонней службой WCF, использующей Mtom в качестве кодировки сообщения. Я создал поведение инспектора сообщений, и я могу просмотреть запрос «строка», вызвав request.ToString(). Однако сообщение никогда не выглядит как mtom-кодированное и не содержит никаких частей MIME. Я предполагаю, что кодирование Mtom происходит позже в конвейере канала. Мой вопрос в том, есть ли способ просмотреть фактическое исходящее сообщение независимо от кодировки, поскольку оно будет отправлено по проводке в службу WCF?WCF - проверить сообщение, закодированное MTOM. BeforeSendRequest

Ниже инспектор сообщения я использую:

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; 
    } 
} 

ответ

1

AFAIK кодирование сообщения применяется после BeforeSendRequest. Для просмотра сообщений вы можете использовать журнал сообщений WCF или скрипт.