OperationContractAttribute.IsInitiating OperationContractAttribute.IsInitiating OperationContractAttribute.IsInitiating OperationContractAttribute.IsInitiating Property

Определение

Возвращает или задает значение, указывающее, реализует ли метод операцию, которая может инициировать сеанс на сервере (если такой сеанс существует).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, если операции разрешено инициировать сеанс на сервере; в противном случае — значение false.true if the operation is permitted to initiate a session on the server, otherwise, false. Значение по умолчанию — true.The default is true.

Примеры

В следующем примере представлена служба, которая реализует контракт службы, определяющий три метода.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.

Обычно для свойства IsInitiating задается значение false, чтобы заставить клиентов вызывать другой метод в службе перед вызовом данного метода.Typically, you set IsInitiating to false to force clients to call another method on the service before they can invoke this one. Например, если служба имеет ряд операций, зависящих от идентификационного номера заказа, можно присвоить свойству IsInitiating значение true для операции службы GetOrderId, а для всех остальных операций службы задать значение 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. Это обеспечит получение каждым новым клиентом номера заказа до использования других методов, представленных данной службой.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.A service contract can have only one service operation with the Action property set to "*". Любая группа контрактов служб, размещенная на том же URI прослушивания, которую реализует класс службы, может иметь множество операций Action службы со свойством*, имеющим значение IsInitiating "", если falseсвойство имеет значение.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. Однако только один из этих методов службы может Action иметь свойство со значением "*" true, а IsInitiating свойство — значением.However, only one of those service methods can have the Action property set to "*" and the IsInitiating property set to true.

Если служба принимает сообщение для неинициирующей операции, она возвращает сообщение об ошибке SOAP ActionNotSupported.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.

Применяется к