OperationContractAttribute.IsTerminating Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece un valor que indica si la operación de servicio hace que el servidor cierre la sesión después de enviar el mensaje de respuesta, si lo hubiera.
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 de propiedad
true
si la operación provoca que el servidor cierre la sesión, de lo contrario, false
. De manera predeterminada, es false
.
Ejemplos
El ejemplo siguiente es un servicio que implementa un contrato de servicio que especifica tres operaciones. El servicio requiere una conexión con estado. Si la primera llamada de un autor de la llamada es a cualquier operación distinta de MethodOne
, se rechaza el canal y se produce una excepción. Cuando un autor de la llamada inicia una sesión llamando a MethodOne
, ese autor de la llamada puede terminar la sesión de comunicación en cualquier momento llamando a MethodThree
.
MethodTwo
se puede llamar a cualquier número de veces durante una sesión.
[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;
}
}
Comentarios
Utilice la propiedad IsTerminating para indicar que al llamar a una operación de servicio, se finaliza la sesión de comunicación.
En una aplicación cliente, un valor de IsTerminating establecido en indica a true
WCF que cierre el canal después de que llegue la respuesta.
En un servicio, se establece un temporizador y el canal anula si el cliente no cierra el canal dentro de ese período.
Para obtener más información sobre el uso de esta propiedad con sesiones, vea Uso de sesiones.
Nota:
Si el autor de la llamada está escuchando el evento OperationContext.OperationCompleted para una operación OperationContractAttribute.IsTerminating, es posible bloquear cuando se reciba la respuesta. La manera adecuada de gestionar esto es programar el trabajo en otro subproceso cuando se llega a OperationCompleted y entonces devolver inmediatamente desde ese controlador de eventos.