OperationContractAttribute.IsInitiating プロパティ

定義

メソッドが (セッションが存在する場合に) サーバー上でセッションを開始できる操作を実装するかどうかを示す値を取得または設定します。Gets or sets a value that indicates whether the method implements an operation that can initiate a session on the server (if such a session exists).

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。それ以外の場合は falsetrue if the operation is permitted to initiate a session on the server, otherwise, false. 既定値は、true です。The default is true.

次の例は、3 つのメソッドを指定するサービス コントラクトを実装するサービスです。The following example is a service that implements a service contract that specifies three methods. このサービスは、セッションを必要とします。The service requires a session. 呼び出し元の最初の呼び出しが MethodOne 以外の操作である場合、チャネルは拒否され、例外がスローされます。If a caller's first call is to any operation other than MethodOne, the channel is refused and an exception is thrown. 呼び出し元が MethodOne を呼び出してセッションを開始した場合、呼び出し元は MethodThree を呼び出すことでいつでも通信セッションを終了できます。When a caller initiates a session by calling MethodOne, that caller can terminate the communication session at any time by calling MethodThree. MethodTwo は、セッション中に何回でも呼び出すことができます。MethodTwo can be called any number of times during a session.

[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 プロパティは、ある操作を、セッションが作成されるときに呼び出される最初の操作にできるかどうかを制御します。The IsInitiating property controls whether an operation can be the first operation called when a session is created.

注意

ServiceContractAttribute.SessionMode の値が Allowed または Required である必要があります。さらに、IsInitiating プロパティが正常に機能するには、使用されるバインディングがセッションを要求または許可する必要があります。The value of ServiceContractAttribute.SessionMode must be either Allowed or Required and the binding used must require or allow sessions for the IsInitiating property to work properly.

既定値は true で、操作をチャネルで最初に呼び出される操作にできることを意味します。The default is true, which means that an operation can be the first one called on a channel. 開始メソッドのそれ以降の呼び出しでは、そのメソッドを呼び出す以外の機能はありません。Subsequent calls to the initiating method have no effect, other than to call the method. 他のセッションは作成されません。No other sessions are created. コントラクトがセッションを使用しない場合は、IsInitiating に設定された false は無視されます。If the contract does not make use of a session, setting IsInitiating to false is ignored.

通常は、IsInitiatingfalse に設定して、クライアントが、このメソッドを呼び出す前にサービスで他のメソッドを呼び出すようにします。Typically, you set IsInitiating to false to force clients to call another method on the service before they can invoke this one. たとえば、サービスに注文 ID 番号に依存する一連の操作がある場合は、IsInitiating サービス操作の trueGetOrderId を設定し、それ以外のすべてのサービス操作に false を設定できます。For example, if your service has a series of operations that depend on an order ID number, you can set IsInitiating to true for a GetOrderId service operation and set all remaining service operations to false. これにより、新しいクライアントが、サービスにより公開される他のメソッドを使用する前に注文 ID を取得することが保証されます。This ensures that each new client obtains an order ID prior to using the other methods exposed by the service.

注意

IsInitiating プロパティと Action プロパティには、相関関係があります。There is an interaction between IsInitiating and the Action property. サービス コントラクトは、Action プロパティが "*" に設定されたサービス操作を 1 つだけ持つことができます。A service contract can have only one service operation with the Action property set to "*". サービスクラスが実装する同じリッスン URI でホストされているサービスコントラクトのグループは、IsInitiating プロパティが false に設定されている場合、Action プロパティが "*" に設定された多数のサービス操作を持つことができます。Any group of service contracts hosted at the same listen URI that a service class implements can have many service operations with the Action property set to "*" when the IsInitiating property is set to false. ただし、これらのサービスメソッドの1つだけが、"*" に設定された @no__t 0 のプロパティと、IsInitiating プロパティを true に設定することができます。However, only one of those service methods can have the Action property set to "*" and the IsInitiating property set to true.

開始以外の操作のメッセージを受信した場合、サービスは ActionNotSupported SOAP エラーを返します。If a service receives a message for a non-initiating operation, the service returns an ActionNotSupported SOAP fault. これにより、クライアントでは FaultException が発生します。The client experiences this as an FaultException. クライアントが開始以外の操作を最初に呼び出した場合、クライアントのランタイムは System.InvalidOperationException をスローします。If a client calls a non-initiating operation first, the client runtime throws an System.InvalidOperationException.

詳細については、「セッションの使用」を参照してください。For more information, see Using Sessions.

適用対象