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.
Assembly: System.ServiceModel (in System.ServiceModel.dll)
Thetype exposes the following members.
|ContextBindingElement()||Initializes a new instance of the class.|
|ContextBindingElement(ProtectionLevel)||Initializes a new instance of the class with a specified level of protection.|
|ContextBindingElement(ProtectionLevel, ContextExchangeMechanism)||Initializes a new instance of the class with a specified level of protection and exchange mechanism.|
|ContextBindingElement(ProtectionLevel, ContextExchangeMechanism, Uri)||Initializes a new instance of the class with the specified protection level, context exchange mechanism, and client callback address.|
|ContextBindingElement(ProtectionLevel, ContextExchangeMechanism, Uri, Boolean)||Initializes a new instance of the class with the specified protection level, context exchange mechanism, client callback address, and a value that specifies whether context management is enabled.|
|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.|
|BuildChannelFactory<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).)|
|BuildChannelListener<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).)|
|CanBuildChannelFactory<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).)|
|CanBuildChannelListener<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).)|
|Clone||Creates a new object initialized from the current one. (Overrides BindingElement.Clone().)|
|Equals(Object)||Determines whether the specified object is equal to the current object. (Inherited from Object.)|
|ExportPolicy||Writes custom policy assertions into the context of the binding element.|
|Finalize||Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)|
|GetHashCode||Serves as the default hash function. (Inherited from Object.)|
|GetProperty<T>||Returns the typed object with the specified context from the appropriate layer in the channel stack. (Overrides BindingElement.GetProperty<T>(BindingContext).)|
|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.)|
The allows the user to add an element to the binding of a service for managing its context exchange protocol. The is typically stacked on top of reliability, security, and transport binding elements. A 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.
If a session-based binding is created with a 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 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."