다음을 통해 공유


OperationContractAttribute.IsInitiating 속성

정의

메서드가 서버의 세션(있는 경우)을 시작할 수 있는 작업을 구현할지 여부를 나타내는 값을 가져오거나 설정합니다.

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

속성 값

Boolean

작업에서 서버의 세션을 시작할 수 있으면 true이고, 그렇지 않으면 false입니다. 기본값은 true입니다.

예제

다음 예제는 세 가지 메서드를 지정하는 서비스 계약을 구현하는 서비스입니다. 서비스에는 세션이 필요합니다. 호출자의 첫 번째 호출이 아닌 MethodOne다른 작업에 대한 경우 채널이 거부되고 예외가 throw됩니다. 호출자가 호출하여 세션을 시작하면 해당 호출자는 언제든지 호출MethodOne``MethodThree하여 통신 세션을 종료할 수 있습니다. MethodTwo 는 세션 중에 여러 번 호출할 수 있습니다.

[ServiceContract(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;  
  }  
}  

설명

이 속성은 IsInitiating 세션을 만들 때 작업이 호출된 첫 번째 작업이 될 수 있는지 여부를 제어합니다.

참고

ServiceContractAttribute.SessionMode 은 사용 중인 바인딩 중 하나 Required Allowed 여야 하며 속성이 제대로 작동하려면 세션이 IsInitiating 필요하거나 허용해야 합니다.

기본값은 true작업이 채널에서 호출된 첫 번째 작업이 될 수 있음을 의미합니다. 시작 메서드에 대한 후속 호출은 메서드를 호출하는 것 외에는 효과가 없습니다. 다른 세션은 만들어지지 않습니다. 계약이 세션을 사용하지 않는 경우 설정 IsInitiating false 은 무시됩니다.

일반적으로 클라이언트가 이 메서드를 호출하기 false 전에 서비스에서 다른 메서드를 호출하도록 강제 설정 IsInitiating 했습니다. 예를 들어 서비스에 주문 ID 번호에 따라 일련의 작업이 있는 경우 서비스 작업으로 true GetOrderId 설정하고 IsInitiating 나머지 모든 서비스 작업을 으로 설정할 수 있습니다false. 이렇게 하면 서비스에서 노출하는 다른 메서드를 사용하기 전에 각 새 클라이언트가 주문 ID를 얻습니다.

참고

속성과 속성 간의 IsInitiating 상호 작용이 있습니다 Action . 서비스 계약에는 속성이 "*"로 Action 설정된 하나의 서비스 작업만 있을 수 있습니다. 서비스 클래스가 구현하는 동일한 수신 대기 URI에서 호스트되는 모든 서비스 계약 그룹에는 속성false이 "*"IsInitiating로 설정된 여러 서비스 작업이 Action 있을 수 있습니다. 그러나 이러한 서비스 메서드 중 하나만 속성을 ""IsInitiating로 설정하고 속성을 으로 설정할 true수 있습니다Action.*

서비스가 시작되지 않는 작업에 대한 메시지를 수신하는 경우 서비스는 ActionNotSupported SOAP 오류를 반환합니다. 클라이언트는 이를 .로 FaultException경험합니다. 클라이언트가 먼저 시작하지 않는 작업을 호출하는 경우 클라이언트 런타임은 .System.InvalidOperationException

자세한 내용은 세션 사용을 참조하세요.

적용 대상