Vorgehensweise: Überprüfen oder Ändern von Nachrichten auf dem Client

Sie können die eingehenden oder ausgehenden Nachrichten für einen WCF-Client überprüfen oder ändern, indem Sie einen System.ServiceModel.Dispatcher.IClientMessageInspector implementieren und in die Clientlaufzeit einfügen. Weitere Informationen finden Sie unter Erweitern von Clients. Die entsprechende Funktion für den Dienst ist System.ServiceModel.Dispatcher.IDispatchMessageInspector.

So überprüfen oder ändern Sie Nachrichten

  1. Implementieren Sie die System.ServiceModel.Dispatcher.IClientMessageInspector-Schnittstelle.

  2. Implementieren Sie ein System.ServiceModel.Description.IEndpointBehavior oder System.ServiceModel.Description.IContractBehavior, je nach dem Umfang, in dem Sie Ihren Clientnachrichteninspektor auf einfache Weise einfügen möchten.

  3. Fügen Sie Ihr Verhalten vorher ein, indem Sie die System.ServiceModel.ClientBase.Open- oder die System.ServiceModel.ICommunicationObject.Open-Methode in System.ServiceModel.ChannelFactory einfügen. Ausführliche Informationen finden Sie unter Konfigurieren und Erweitern der Laufzeit mit Verhalten.

Beispiel

Die unten aufgeführten Codebeispiele zeigen der Reihe nach Folgendes:

  • Eine Clientinspektorimplementierung.

  • Ein Endpunktverhalten, das den Inspektor einfügt.

  • Eine Konfigurationsdatei, die das Verhalten lädt und in einer Clientanwendung ausführt.

#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
#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())
End Sub

Public Sub ApplyDispatchBehavior(ByVal endpoint As ServiceEndpoint, ByVal endpointDispatcher As EndpointDispatcher) Implements IEndpointBehavior.ApplyDispatchBehavior
  endpointDispatcher.DispatchRuntime.MessageInspectors.Add(New Inspector())
End Sub

Public Sub Validate(ByVal endpoint As ServiceEndpoint) Implements IEndpointBehavior.Validate
    Return
End Sub
  <client>
      <endpoint 
        address="https://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>

Siehe auch

Verweis

System.ServiceModel.Dispatcher.IClientMessageInspector
System.ServiceModel.Dispatcher.IDispatchMessageInspector

Konzepte

Konfigurieren und Erweitern der Laufzeit mit Verhalten