ContextBindingElement Class

Provides a protection level and an exchange mechanism as part of the context of a binding element and the functionality to build the channel listeners and factories.

System.Object
  System.ServiceModel.Channels.BindingElement
    System.ServiceModel.Channels.ContextBindingElement

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

public class ContextBindingElement : BindingElement, 
	IPolicyExportExtension, IContextBindingElement

The ContextBindingElement type exposes the following members.

  NameDescription
Public methodContextBindingElement()Initializes a new instance of the ContextBindingElement class.
Public methodContextBindingElement(ProtectionLevel)Initializes a new instance of the ContextBindingElement class with a specified level of protection.
Public methodContextBindingElement(ProtectionLevel, ContextExchangeMechanism)Initializes a new instance of the ContextBindingElement class with a specified level of protection and exchange mechanism.
Public methodContextBindingElement(ProtectionLevel, ContextExchangeMechanism, Uri)Initializes a new instance of the ContextBindingElement class with the specified protection level, context exchange mechanism, and client callback address.
Public methodContextBindingElement(ProtectionLevel, ContextExchangeMechanism, Uri, Boolean)Initializes a new instance of the ContextBindingElement class with the specified protection level, context exchange mechanism, client callback address, and a value that specifies whether context management is enabled.
Top

  NameDescription
Public propertyClientCallbackAddressGets or sets the client callback address for the binding element.
Public propertyContextExchangeMechanismGets or sets the exchange mechanism used to communicate context for the binding element.
Public propertyContextManagementEnabledGets or sets a value that specifies whether context management is enabled.
Public propertyProtectionLevelGets or sets the level of protection for the binding element from the context.
Top

  NameDescription
Public methodBuildChannelFactory<TChannel>Builds the channel factory stack on the client that creates a specified type of channel for a specified context. (Overrides BindingElement.BuildChannelFactory<TChannel>(BindingContext).)
Public methodBuildChannelListener<TChannel>Builds the channel listener stack on the client that accepts a specified type of channel for a specified context. (Overrides BindingElement.BuildChannelListener<TChannel>(BindingContext).)
Public methodCanBuildChannelFactory<TChannel>Returns a value that indicates whether the current binding element can build a factory for a specified type of channel and context. (Overrides BindingElement.CanBuildChannelFactory<TChannel>(BindingContext).)
Public methodCanBuildChannelListener<TChannel>Returns a value that indicates whether the current binding can build a listener for a specified type of channel and context. (Overrides BindingElement.CanBuildChannelListener<TChannel>(BindingContext).)
Public methodCloneCreates a new ContextBindingElement object initialized from the current one. (Overrides BindingElement.Clone().)
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Public methodExportPolicyWrites custom policy assertions into the context of the binding element.
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public methodGetHashCodeServes as the default hash function. (Inherited from Object.)
Public methodGetProperty<T>Returns the typed object with the specified context from the appropriate layer in the channel stack. (Overrides BindingElement.GetProperty<T>(BindingContext).)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Top

The ContextBindingElement allows the user to add an element to the binding of a service for managing its context exchange protocol. The ContextBindingElement is typically stacked on top of reliability, security, and transport binding elements. A ContextBindingElement does not require any configuration options and can create channel factories for IRequestChannel, IRequestSessionChannel, and IDuplexSessionChannel. It can also create channel listeners for IReplyChannel, IReplySessionChannel, and IDuplexSessionChannel. A context channel does not change the channel interface – the underlying channel stack must support the requested channel shape and session capability.

The channel listeners and factories are used to construct the part of the channel stacks used to process incoming and outgoing messages.

NoteNote

If a session-based binding is created with a ContextBindingElement and used with a contract that specifies SessionMode = NotAllowed, an InvalidOperationException is thrown when the channel is created with the following text: "Channel context management cannot be enabled or disabled after the channel is opened." You must set SessionMode to Allowed or Required or not use a session-based channel.

When creating a custom binding, it is recommended that you add the ContextBindingElement to the BindingElementCollection of the custom binding before adding any reliability and security binding elements, if present. If you do not, your service may throw a ProtocolException with the following message:

"Context channel received a message with context which does not match the current context cached at the channel. Ensure service does not change context after it was originally set or disable context management by setting channel property 'IContextManager.Enabled' to false."

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5

.NET Framework Client Profile

Supported in: 4

Windows 8.1, Windows Server 2012 R2, 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.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft