This topic has not yet been rated - Rate this topic

ClientRuntime Class

The insertion point for classes that extend the functionality of client objects for all messages handled by a client application.

System.Object
  System.ServiceModel.Dispatcher.ClientRuntime

Namespace:  System.ServiceModel.Dispatcher
Assembly:  System.ServiceModel (in System.ServiceModel.dll)
public sealed class ClientRuntime

The ClientRuntime type exposes the following members.

  Name Description
Public method Supported by Portable Class Library ClientRuntime
Top
  Name Description
Public property CallbackClientType Gets or sets the type of the callback contract associated with a duplex client.
Public property CallbackDispatchRuntime Gets the dispatch run-time that dispatches service-initiated operations.
Public property ChannelInitializers Gets a collection of channel initializer objects used to customize the channel associated with a client.
Public property Supported by Portable Class Library ContractClientType Gets the type of the contract associated with a client.
Public property Supported by Portable Class Library ContractName Gets the name of the contract associated with a client.
Public property Supported by Portable Class Library ContractNamespace Gets the namespace of the contract associated with a client.
Public property InteractiveChannelInitializers An interactive channel initializer.
Public property Supported by Portable Class Library ManualAddressing Gets or sets a value that indicates whether the client adds addressing headers to request-reply messages.
Public property Supported by Portable Class Library MaxFaultSize Gets or sets the maximum fault size.
Public property MessageInspectors Gets a collection of message inspector implementations for a client.
Public property MessageVersionNoneFaultsEnabled Determines whether the MessageVersionNoneFaultsEnabled property is set.
Public property Operations Gets a collection of client operations for a client.
Public property Supported by Portable Class Library OperationSelector Gets or sets a IClientOperationSelector implementation that can be used to select a ClientOperation.
Public property Supported by Portable Class Library UnhandledClientOperation Returns the client operation for methods that do not have a corresponding ClientOperation in the Operations collection.
Public property ValidateMustUnderstand Gets or sets a value that specifies whether the system or the application enforces SOAP MustUnderstand header processing.
Public property Supported by Portable Class Library Via Gets or sets the transport address that is used to send messages through the client.
Top
  Name Description
Public method Supported by Portable Class Library Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Supported by Portable Class Library Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method Supported by Portable Class Library GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public method Supported by Portable Class Library GetType Gets the Type of the current instance. (Inherited from Object.)
Protected method Supported by Portable Class Library MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Public method Supported by Portable Class Library ToString Returns a string that represents the current object. (Inherited from Object.)
Top

client objects, whether an extension of ClientBase<TChannel> or of IClientChannel, are used by client applications to convert method calls into outbound messages and convert incoming messages to objects and pass them to the results of client methods.

The ClientRuntime class is an extensibility point to which you can add extension objects that intercept messages and extend client behavior across all operations. Interception objects can process all messages in a particular contract, process only messages for particular operations, perform custom channel initialization, and implement other custom client application behavior. For an overview of client architecture, see Client Architecture. For more information about client programming, see Consuming Services Using a Client. For details about customizations and how to perform them, see Extending Clients.

  • The CallbackDispatchRuntime property returns the dispatch run-time object for service-initiated callback operations.

  • The OperationSelector property accepts a custom operation selector object to control the routing of client messages.

  • The ChannelInitializers property enables the addition of a channel initializer that can inspect or modify the client channel.

  • The InteractiveChannelInitializers property can be used to display a visual prompt to enable a user to select credentials prior to opening the channel.

  • The Operations property gets a collection of ClientOperation objects to which you can add custom message interceptors that provide functionality specific to the messages of that operation.

  • The ManualAddressing property enables an application to turn off some automatic addressing headers to directly control addressing.

  • The MaxFaultSize property enables the client to limit the size of fault messages that the client accepts.

  • The MessageInspectors property gets a collection of IClientMessageInspector objects to which you can add custom message interceptors for all messages traveling through a client.

  • The UnhandledClientOperation property returns the operation to which unexpected messages are passed.

  • The ValidateMustUnderstand property informs the system whether it should confirm that SOAP headers marked as MustUnderstand have, in fact, been understood.

  • The Via property sets the value of the destination of the message at the transport level to support intermediaries and other scenarios.

In addition, there are a number of other properties that retrieve the client contract information:

If the client is a duplex client, the following properties also retrieve the client callback type and runtime:

In the following code example an System.ServiceModel.Description.IEndpointBehavior inserts a System.ServiceModel.Dispatcher.IClientMessageInspector into the client runtime by adding it to the MessageInspectors property.


#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; }


The following code example shows a configuration file that loads the endpoint behavior into the client 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>


.NET Framework

Supported in: 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ