IContextManager.Enabled 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置一个指示是否已启用上下文管理的值。
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 通道属性来调用 SetContext 或 IContextManager
的尝试都会导致 InvalidOperationException
。
除上下文 HTTP Cookie 以外,所有 HTTP Cookie 都在通道级进行处理。 上下文 HTTP Cookie 在应用程序级进行管理。 在共享通道以便与 ContextMessageProperty 所针对的不同实例对话时,这可能导致意外的结果。 下表显示将 Enabled 设置为 true
或 false
时对 HTTP Cookie 的影响。
绑定 | IContextManager.Enabled 值 | 上下文 HTTP Cookie 范围 | 其他 HTTP Cookie 范围 |
---|---|---|---|
BasicHttpBinding | 不适用 | ChannelFactory | ChannelFactory |
BasicHttpContextBinding | true | 通道 | 通道 |
BasicHttpContextBinding | false | 对于每个消息(由应用程序显式管理) | 通道 |