IClientMessageInspector.BeforeSendRequest Method (Message, IClientChannel)


Enables inspection or modification of a message before a request message is sent to a service.

Namespace:   System.ServiceModel.Dispatcher
Assembly:  System.ServiceModel (in System.ServiceModel.dll)

object BeforeSendRequest(
	ref Message request,
	IClientChannel channel


Type: System.ServiceModel.Channels.Message

The message to be sent to the service.

Type: System.ServiceModel.IClientChannel

The WCF client object channel.

Return Value

Type: System.Object

The object that is returned as the correlationState argument of the AfterReceiveReply method. This is null if no correlation state is used.

The best practice is to make this a System.Guid to ensure that no two correlationState objects are the same.

Implement the BeforeSendRequest to inspect or modify a request message before it is sent.

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.

Universal Windows Platform
Available since 8
.NET Framework
Available since 3.0
Portable Class Library
Supported in: portable .NET platforms
Available since 4.0
Return to top