IClientMessageInspector Interface
Defines a message inspector object that can be added to the MessageInspectors collection to view or modify messages.
Assembly: System.ServiceModel (in System.ServiceModel.dll)
The IClientMessageInspector type exposes the following members.
| Name | Description | |
|---|---|---|
![]() ![]() | AfterReceiveReply | Enables inspection or modification of a message after a reply message is received but prior to passing it back to the client application. |
![]() ![]() | BeforeSendRequest | Enables inspection or modification of a message before a request message is sent to a service. |
Implement the IClientMessageInspector interface and add it to the MessageInspectors collection to inspect or modify messages as they pass through a WCF client object. For details, see ClientRuntime.
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; }
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; }
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>
<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>
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

