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 时在其他线程上调度工作,然后从该事件处理程序立即返回。

适用于