OperationContractAttribute.IsTerminating 属性

定义

获取或设置一个值,该值指示服务操作在发送答复消息(如果存在)后,是否会导致服务器关闭会话。

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

属性值

如果该操作会导致服务器关闭会话,则为 true;否则为 false。 默认值为 false

示例

下面的示例演示了一个服务,该服务实现指定三个操作的服务协定。 该服务需要有状态连接。 如果调用方第一次调用的是除 MethodOne 以外的任何操作,则会拒绝该信道并且会引发异常。 调用方通过调用 MethodOne 启动会话时,可通过调用 MethodThree 随时终止通信会话。 MethodTwo 可以在会话期间调用任意次数。

[ServiceContractAttribute(SessionMode=SessionMode.Required)]
public class InitializeAndTerminateService
{
  [OperationContract(
    IsOneWay=true,
    IsInitiating=true,
    IsTerminating=false
  )]
  public void MethodOne()
  {
    return;
  }

  [OperationContract(
    IsInitiating=false,
    IsTerminating=false
  )]
  public int MethodTwo(int x, out int y)
  {
    y = 34;
    return 0;
  }

  [OperationContract(
    IsOneWay=true,
    IsInitiating=false
    IsTerminating=true
  )]
  public void MethodThree()
  {
    return;
  }
}

注解

使用 IsTerminating 属性指示调用服务操作可终止通信会话。

在客户端应用程序中, IsTerminating 值设置为 指示 true WCF 在回复到达后关闭通道。

在服务中,如果客户端在该期间内不关闭信道,则将会设置计时器并中止信道。

有关将此属性用于会话的详细信息,请参阅 使用会话

注意

如果调用方侦听的是 OperationContext.OperationCompleted 操作的 OperationContractAttribute.IsTerminating 事件,则在收到响应时可能会阻塞。 处理这种情况的正确方法是,当引发 OperationCompleted 时在其他线程上调度工作,然后从该事件处理程序立即返回。

适用于