OperationContractAttribute.IsTerminating Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define um valor que indica se a operação de serviço faz o servidor fechar a sessão depois que a mensagem de resposta, se houver, for enviada.
public:
property bool IsTerminating { bool get(); void set(bool value); };
public bool IsTerminating { get; set; }
member this.IsTerminating : bool with get, set
Public Property IsTerminating As Boolean
Valor da propriedade
true
se a operação faz com que o servidor feche a sessão, caso contrário, false
. O padrão é false
.
Exemplos
O exemplo a seguir é um serviço que implementa um contrato de serviço que especifica três operações. O serviço requer uma conexão com estado. Se a primeira chamada de um chamador for para qualquer operação diferente MethodOne
de , o canal será recusado e uma exceção será gerada. Quando um chamador inicia uma sessão chamando MethodOne
, esse chamador pode encerrar a sessão de comunicação a qualquer momento chamando MethodThree
.
MethodTwo
pode ser chamado várias vezes durante uma sessão.
[ServiceContractAttribute(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;
}
}
Comentários
Use a IsTerminating propriedade para indicar que chamar uma operação de serviço encerra a sessão de comunicação.
Em um aplicativo cliente, um valor de IsTerminating definido como true
instrui o WCF a fechar o canal após a chegada da resposta.
Em um serviço, um temporizador é definido e o canal é anulado se o cliente não fecha o canal dentro desse período.
Para obter mais informações sobre como usar essa propriedade com sessões, consulte Usando sessões.
Observação
Se um chamador estiver escutando o OperationContext.OperationCompleted evento para uma OperationContractAttribute.IsTerminating operação, será possível bloquear quando a resposta for recebida. A maneira adequada de lidar com isso é agendar o trabalho em outro thread quando OperationCompleted é gerado e, em seguida, retornar imediatamente desse manipulador de eventos.