IContextManager.Enabled 属性

定义

获取或设置一个指示是否已启用上下文管理的值。

public:
 property bool Enabled { bool get(); void set(bool value); };
public bool Enabled { get; set; }
member this.Enabled : bool with get, set
Public Property Enabled As Boolean

属性值

如果启用了上下文,则为 true;否则为 false

注解

启用上下文管理时,上下文通道将在其生存期内缓存上下文。 通过对通道调用 IContextManager 方法,可以通过通道属性 GetContext 从通道检索上下文。 在通过对通道属性调用 SetContext 方法以打开通道之前,还可以使用上下文来预先初始化通道。 在使用上下文初始化通道之后,将不能重置通道。

以下是此模式下的固定行为:

  • 打开通道后,对 SetContext 的任何调用都将引发一个 InvalidOperationException

  • 任何试图通过在传出消息中使用 ContextMessageProperty 来发送上下文的操作都会引发 InvalidOperationException

  • 在已使用上下文对通道进行初始化之后,如果使用上下文从服务器接收消息,则会引发 ProtocolException。 请注意,如果打开通道时没有显式设置上下文,则可以从服务器接收初始上下文。

  • 传入消息上的 ContextMessageProperty 始终为 null

未启用上下文管理时,上下文通道并不对上下文进行管理, 而是由应用程序负责通过 ContextMessageProperty 来检索、管理和应用上下文。 任何通过 GetContext 通道属性来调用 SetContextIContextManager 的尝试都会导致 InvalidOperationException

除上下文 HTTP Cookie 以外,所有 HTTP Cookie 都在通道级进行处理。 上下文 HTTP Cookie 在应用程序级进行管理。 在共享通道以便与 ContextMessageProperty 所针对的不同实例对话时,这可能导致意外的结果。 下表显示将 Enabled 设置为 truefalse 时对 HTTP Cookie 的影响。

绑定 IContextManager.Enabled 值 上下文 HTTP Cookie 范围 其他 HTTP Cookie 范围
BasicHttpBinding 不适用 ChannelFactory ChannelFactory
BasicHttpContextBinding true 通道 通道
BasicHttpContextBinding false 对于每个消息(由应用程序显式管理) 通道

适用于