OperationContractAttribute.IsInitiating プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
メソッドが (セッションが存在する場合に) サーバー上でセッションを開始できる操作を実装するかどうかを示す値を取得または設定します。
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
プロパティ値
サーバーでのセッションの開始操作が許可されている場合は 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
は無視されます。
通常は、IsInitiating を false
に設定して、クライアントが、このメソッドを呼び出す前にサービスで他のメソッドを呼び出すようにします。 たとえば、サービスに注文 ID 番号に依存する一連の操作がある場合は、IsInitiating サービス操作の true
に GetOrderId
を設定し、それ以外のすべてのサービス操作に false
を設定できます。 これにより、新しいクライアントが、サービスにより公開される他のメソッドを使用する前に注文 ID を取得することが保証されます。
注意
IsInitiating プロパティと Action プロパティには、相関関係があります。 サービス コントラクトは、Action プロパティが "*" に設定されたサービス操作を 1 つだけ持つことができます。 サービス クラスが実装するのとAction同じリッスン URI でホストされるサービス コントラクトのグループは、プロパティが "*" に設定false
されている場合に多くのサービス操作をIsInitiating行うことができます。 ただし、プロパティを "" に設定し、プロパティを Action "*" に設定true
できるのは、これらのサービス メソッドの IsInitiating 1 つだけです。
開始以外の操作のメッセージを受信した場合、サービスは ActionNotSupported SOAP エラーを返します。 これにより、クライアントでは FaultException が発生します。 クライアントが開始以外の操作を最初に呼び出した場合、クライアントのランタイムは System.InvalidOperationException をスローします。
詳細については、「セッションの使用」を参照してください。