次の方法で共有


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 です。

次の例は、3 つのメソッドを指定するサービス コントラクトを実装するサービスです。 このサービスは、セッションを必要とします。 呼び出し元の最初の呼び出しが MethodOne 以外の操作である場合、チャネルは拒否され、例外がスローされます。 呼び出し元が 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 の値が Allowed または Required である必要があります。さらに、IsInitiating プロパティが正常に機能するには、使用されるバインディングがセッションを要求または許可する必要があります。

既定値は true で、操作をチャネルで最初に呼び出される操作にできることを意味します。 開始メソッドのそれ以降の呼び出しでは、そのメソッドを呼び出す以外の機能はありません。 他のセッションは作成されません。 コントラクトがセッションを使用しない場合は、IsInitiating に設定された false は無視されます。

通常は、IsInitiatingfalse に設定して、クライアントが、このメソッドを呼び出す前にサービスで他のメソッドを呼び出すようにします。 たとえば、サービスに注文 ID 番号に依存する一連の操作がある場合は、IsInitiating サービス操作の trueGetOrderId を設定し、それ以外のすべてのサービス操作に false を設定できます。 これにより、新しいクライアントが、サービスにより公開される他のメソッドを使用する前に注文 ID を取得することが保証されます。

注意

IsInitiating プロパティと Action プロパティには、相関関係があります。 サービス コントラクトは、Action プロパティが "*" に設定されたサービス操作を 1 つだけ持つことができます。 サービス クラスが実装するのとAction同じリッスン URI でホストされるサービス コントラクトのグループは、プロパティが "*" に設定falseされている場合に多くのサービス操作をIsInitiating行うことができます。 ただし、プロパティを "" に設定し、プロパティを Action "*" に設定trueできるのは、これらのサービス メソッドの IsInitiating 1 つだけです。

開始以外の操作のメッセージを受信した場合、サービスは ActionNotSupported SOAP エラーを返します。 これにより、クライアントでは FaultException が発生します。 クライアントが開始以外の操作を最初に呼び出した場合、クライアントのランタイムは System.InvalidOperationException をスローします。

詳細については、「セッションの使用」を参照してください。

適用対象