Comment : inspecter ou modifier des messages sur le client
Vous pouvez inspecter ou modifier les messages entrants ou sortants sur un client WCF en implémentant un System.ServiceModel.Dispatcher.IClientMessageInspector et en l'insérant dans l'exécution du client. Pour plus d'informations, consultez Extension de clients. La fonctionnalité équivalente sur le service est System.ServiceModel.Dispatcher.IDispatchMessageInspector.
Pour inspecter ou modifier des messages
Implémentez l'interface System.ServiceModel.Dispatcher.IClientMessageInspector.
Implémentez System.ServiceModel.Description.IEndpointBehavior ou System.ServiceModel.Description.IContractBehavior en fonction de la portée à laquelle vous souhaitez insérer facilement votre inspecteur de message client.
Insérez votre comportement avant d'appeler la méthode System.ServiceModel.ClientBase.Open ou System.ServiceModel.ICommunicationObject.Open sur System.ServiceModel.ChannelFactory. Pour plus d'informations, consultez Configuration et extension de l'exécution à l'aide de comportements.
Exemple
Les exemples de code suivants affichent, dans l'ordre :
Une implémentation d'inspecteur client.
Un comportement de point de terminaison qui insère l'inspecteur.
Un fichier de configuration qui charge et exécute le comportement dans une application cliente.
#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>
Voir aussi
Référence
System.ServiceModel.Dispatcher.IClientMessageInspector
System.ServiceModel.Dispatcher.IDispatchMessageInspector
Concepts
Configuration et extension de l'exécution à l'aide de comportements