ContextBindingElement Class

Definition

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.

public ref class ContextBindingElement : System::ServiceModel::Channels::BindingElement, System::ServiceModel::Channels::IContextBindingElement, System::ServiceModel::Description::IPolicyExportExtension
public class ContextBindingElement : System.ServiceModel.Channels.BindingElement, System.ServiceModel.Channels.IContextBindingElement, System.ServiceModel.Description.IPolicyExportExtension
type ContextBindingElement = class
    inherit BindingElement
    interface IPolicyExportExtension
    interface IContextBindingElement
Public Class ContextBindingElement
Inherits BindingElement
Implements IContextBindingElement, IPolicyExportExtension
Inheritance
ContextBindingElement
Implements

Remarks

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.

Note

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."

Constructors

ContextBindingElement()

Initializes a new instance of the ContextBindingElement class.

ContextBindingElement(ProtectionLevel)

Initializes a new instance of the ContextBindingElement class with a specified level of protection.

ContextBindingElement(ProtectionLevel, ContextExchangeMechanism)

Initializes a new instance of the ContextBindingElement class with a specified level of protection and exchange mechanism.

ContextBindingElement(ProtectionLevel, ContextExchangeMechanism, Uri)

Initializes a new instance of the ContextBindingElement class with the specified protection level, context exchange mechanism, and client callback address.

ContextBindingElement(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.

Properties

ClientCallbackAddress

Gets or sets the client callback address for the binding element.

ContextExchangeMechanism

Gets or sets the exchange mechanism used to communicate context for the binding element.

ContextManagementEnabled

Gets or sets a value that specifies whether context management is enabled.

ProtectionLevel

Gets or sets the level of protection for the binding element from the context.

Methods

BuildChannelFactory<TChannel>(BindingContext)

Builds the channel factory stack on the client that creates a specified type of channel for a specified context.

BuildChannelListener<TChannel>(BindingContext)

Builds the channel listener stack on the client that accepts a specified type of channel for a specified context.

CanBuildChannelFactory<TChannel>(BindingContext)

Returns a value that indicates whether the current binding element can build a factory for a specified type of channel and context.

CanBuildChannelListener<TChannel>(BindingContext)

Returns a value that indicates whether the current binding can build a listener for a specified type of channel and context.

Clone()

Creates a new ContextBindingElement object initialized from the current one.

Equals(Object)

Determines whether the specified object is equal to the current object.

(Inherited from Object)
ExportPolicy(MetadataExporter, PolicyConversionContext)

Writes custom policy assertions into the context of the binding element.

GetHashCode()

Serves as the default hash function.

(Inherited from Object)
GetProperty<T>(BindingContext)

Returns the typed object with the specified context from the appropriate layer in the channel stack.

GetType()

Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone()

Creates a shallow copy of the current Object.

(Inherited from Object)
ToString()

Returns a string that represents the current object.

(Inherited from Object)

Applies to