IClientMessageInspector IClientMessageInspector IClientMessageInspector IClientMessageInspector Interface

Определение

Определяет объект инспектора сообщений, который можно добавить в коллекцию MessageInspectors для просмотра или изменения сообщений.Defines a message inspector object that can be added to the MessageInspectors collection to view or modify messages.

public interface class IClientMessageInspector
public interface IClientMessageInspector
type IClientMessageInspector = interface
Public Interface IClientMessageInspector

Примеры

В следующем примере кода показана реализация, при вызове которой на консоль выводятся строки.The following code example shows an implementation that writes strings to the console when the implementation is called.

#region IClientMessageInspector Members
public void AfterReceiveReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
{
  Console.WriteLine("IClientMessageInspector.AfterReceiveReply called.");
  Console.WriteLine("Message: {0}", reply.ToString());
}

public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel)
{
  Console.WriteLine("IClientMessageInspector.BeforeSendRequest called.");
  return null;
}
#Region "IClientMessageInspector Members"
    Public Sub AfterReceiveReply(ByRef reply As System.ServiceModel.Channels.Message, _
                       ByVal correlationState As Object) Implements IClientMessageInspector.AfterReceiveReply
        Console.WriteLine("IClientMessageInspector.AfterReceiveReply called.")
        Console.WriteLine("Message: {0}", reply.ToString())
    End Sub

    Public Function BeforeSendRequest(ByRef request As System.ServiceModel.Channels.Message, _
            ByVal channel As IClientChannel) As Object Implements IClientMessageInspector.BeforeSendRequest
        Console.WriteLine("IClientMessageInspector.BeforeSendRequest called.")
        Return Nothing
    End Function

В следующем примере кода показано использование System.ServiceModel.Description.IEndpointBehavior для вставки клиентского инспектора сообщений в конечную точку клиента.The following code example shows how to use an System.ServiceModel.Description.IEndpointBehavior to insert the client message inspector in the client endpoint.

#region IEndpointBehavior Members
public void AddBindingParameters(
  ServiceEndpoint endpoint, BindingParameterCollection bindingParameters
) { return; }

public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
{
  clientRuntime.MessageInspectors.Add(new Inspector());
  foreach (ClientOperation op in clientRuntime.Operations)
    op.ParameterInspectors.Add(new Inspector());
}

public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
{
  endpointDispatcher.DispatchRuntime.MessageInspectors.Add(new Inspector());
  foreach (DispatchOperation op in endpointDispatcher.DispatchRuntime.Operations)
    op.ParameterInspectors.Add(new Inspector());
}

public void Validate(ServiceEndpoint endpoint){ return; }
#Region "IEndpointBehavior Members"
    Public Sub AddBindingParameters(ByVal endpoint As ServiceEndpoint, ByVal bindingParameters _
                                    As BindingParameterCollection) Implements IEndpointBehavior.AddBindingParameters
        Return
    End Sub

    Public Sub ApplyClientBehavior(ByVal endpoint As ServiceEndpoint, ByVal clientRuntime As ClientRuntime) _
    Implements IEndpointBehavior.ApplyClientBehavior
        clientRuntime.MessageInspectors.Add(New Inspector())
        For Each op As ClientOperation In clientRuntime.Operations
            op.ParameterInspectors.Add(New Inspector())
        Next op
    End Sub

    Public Sub ApplyDispatchBehavior(ByVal endpoint As ServiceEndpoint, ByVal endpointDispatcher As  _
                                     EndpointDispatcher) Implements IEndpointBehavior.ApplyDispatchBehavior
        endpointDispatcher.DispatchRuntime.MessageInspectors.Add(New Inspector())
        For Each op As DispatchOperation In endpointDispatcher.DispatchRuntime.Operations
            op.ParameterInspectors.Add(New Inspector())
        Next op
    End Sub

Public Sub Validate(ByVal endpoint As ServiceEndpoint) Implements IEndpointBehavior.Validate
    Return
End Sub

Наконец, в следующем примере кода показано, как изменить файл конфигурации клиента, чтобы использовать поведение конечной точки с определенной конечной точкой.Finally, the following code example shows how to modify the client configuration file to use the endpoint behavior with a particular endpoint.

  <client>
      <endpoint 
        address="http://localhost:8080/SampleService" 
        behaviorConfiguration="clientInspectorsAdded" 
        binding="wsHttpBinding"
        bindingConfiguration="WSHttpBinding_ISampleService" 
        contract="ISampleService"
        name="WSHttpBinding_ISampleService"
      >
      </endpoint>
  </client>
<behaviors>
  <endpointBehaviors>
    <behavior name="clientInspectorsAdded">
      <clientInterceptors />
    </behavior>
  </endpointBehaviors>
</behaviors>
<extensions>
  <behaviorExtensions>
    <add 
      name="clientInterceptors" 
      type="Microsoft.WCF.Documentation.InspectorInserter, HostApplication, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
  />
  </behaviorExtensions>
</extensions>

Комментарии

Реализуйте интерфейс IClientMessageInspector и добавьте его в коллекцию MessageInspectors для проверки или изменения сообщений по мере их передачи через клиентский объект WCF.Implement the IClientMessageInspector interface and add it to the MessageInspectors collection to inspect or modify messages as they pass through a WCF client object. Дополнительные сведения см. в разделе ClientRuntime.For details, see ClientRuntime.

Методы

AfterReceiveReply(Message, Object) AfterReceiveReply(Message, Object) AfterReceiveReply(Message, Object) AfterReceiveReply(Message, Object)

Разрешает проверку или изменение сообщения после получения ответного сообщения, но перед его передачей клиентскому приложению.Enables inspection or modification of a message after a reply message is received but prior to passing it back to the client application.

BeforeSendRequest(Message, IClientChannel) BeforeSendRequest(Message, IClientChannel) BeforeSendRequest(Message, IClientChannel) BeforeSendRequest(Message, IClientChannel)

Разрешает проверку или изменение сообщения до того, как сообщение запроса отправляется службе.Enables inspection or modification of a message before a request message is sent to a service.

Применяется к