This documentation is archived and is not being maintained.

ChannelFactory Class

Creates and manages the channels that are used by clients to send messages to service endpoints.

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

public abstract class ChannelFactory extends CommunicationObject implements IChannelFactory, ICommunicationObject, IDisposable

Channel factories that implement the IChannelFactory interface and their associated channels are generally used by the initiators of a communication pattern. Listener factories that implement the IChannelListener interface and their associated listeners provide the mechanisms with which channels are accepted for communications.

This class is not part of the channel model, but of the service model. The CreateFactory method provides the means to create an IChannelFactory for a service endpoint. Use it to construct a client that hooks up to an interface contract on the service without using metadata or policy.


Setting ChannelFactory.Credentials.Windows.AllowedImpersonationLevel to TokenImpersonationLevel.Anonymous always results in an anonymous logon regardless of impersonation level.

Special note for Managed C++ users deriving from this class:

  • Put your cleanup code in (On)(Begin)Close (and/or OnAbort), not in a destructor.

  • Avoid destructors; they cause the compiler to auto-generate IDisposable.

  • Avoid non-reference members; they can cause the compiler to auto-generate IDisposable.

  • Avoid using a finalizer; but if you include one, you should suppress the build warning and call SuppressFinalize(Object) and the finalizer itself from (On)(Begin)Close (and/or OnAbort) to emulate what would have been the auto-generated IDisposable behavior.

When adding behaviors programmatically, the behavior is added to the appropriate Behaviors property on the ChannelFactory prior to the creation of any channel. See the example section for a code sample.

The following code example shows how to insert programmatically a client behavior prior to the creation of the channel object by the factory.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0