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
Значение свойства
true Значение , если операция разрешена инициировать сеанс на сервере, в противном случае false. Значение по умолчанию — true.
Примеры
В следующем примере показана служба, реализующая контракт службы, указывающий три метода. Для службы требуется сеанс. Если первый вызов вызывающего объекта является любой операцией, отличной от 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 определяет, может ли операция быть первой операцией, вызываемой при создании сеанса.
Note
Значение ServiceContractAttribute.SessionMode должно быть либо Allowed либо, а Required используемая привязка должна требовать или разрешать сеансы для правильной IsInitiating работы свойства.
Значение по умолчанию — trueэто означает, что операция может быть первой, вызываемой на канале. Последующие вызовы метода инициации не влияют, кроме вызова метода. Другие сеансы не создаются. Если контракт не использует сеанс, значение параметра IsInitiatingfalse игнорируется.
Как правило, вы устанавливаете IsInitiating принудительное false вызов клиентами другого метода в службе, прежде чем они смогут вызвать этот метод. Например, если у службы есть ряд операций, зависящих от номера идентификатора заказа, можно задать IsInitiatingtrue для операции службы и задать для GetOrderId всех оставшихся операций falseслужбы значение. Это гарантирует, что каждый новый клиент получает идентификатор заказа до использования других методов, предоставляемых службой.
Note
Существует взаимодействие между IsInitiating и свойством Action . Контракт службы может иметь только одну операцию службы с свойством, заданным Action как "*". Любая группа контрактов служб, размещенных в одном и том же URI прослушивания, которую реализует класс службы, может иметь множество операций службы со Action свойством, заданным значением "*", если IsInitiating для свойства задано falseзначение . Однако только один из этих методов службы может иметь Action значение "*", а IsInitiating для свойства задано значение true"*".
Если служба получает сообщение для операции, не инициирующей, служба возвращает ошибку ActionNotSupported SOAP. Клиент испытывает это как .FaultException Если клиент сначала вызывает операцию, не инициирующую, среда выполнения клиента создает исключение System.InvalidOperationException.
Дополнительные сведения см. в разделе "Использование сеансов".