Condividi tramite


OperationContractAttribute.IsTerminating Proprietà

Definizione

Ottiene o imposta un valore che indica se l'operazione di servizio causa la chiusura della sessione da parte del server dopo l'invio di un eventuale messaggio di risposta.

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

Valore della proprietà

true se l'operazione causa la chiusura della sessione da parte del server. In caso contrario, false. Il valore predefinito è false.

Esempio

L'esempio seguente illustra un servizio che implementa un contratto di servizio in cui sono specificate tre operazioni. Il servizio richiede una connessione con stato. Se la prima chiamata di un chiamante riguarda un'operazione diversa da MethodOne, il canale viene rifiutato e viene generata un'eccezione. Quando un chiamante avvia una sessione chiamando MethodOne, può terminare la sessione di comunicazione in qualsiasi momento chiamando MethodThree. MethodTwo può essere chiamato qualsiasi numero di volte durante una sessione.

[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;  
  }  
}  

Commenti

Utilizzare la proprietà IsTerminating per indicare che la chiamata a un'operazione di servizio comporta la chiusura della sessione di comunicazione.

In un'applicazione client, un valore IsTerminating impostato su indica a true WCF di chiudere il canale dopo l'arrivo della risposta.

Se invece tale impostazione viene eseguita in un servizio, l'infrastruttura imposta un intervallo di tempo e, se il client non chiude il canale entro tale intervallo, il canale viene interrotto.

Per altre informazioni sull'uso di questa proprietà con sessioni, vedere Uso di sessioni.

Nota

Se un chiamante è in ascolto dell'evento OperationContext.OperationCompleted per l'operazione OperationContractAttribute.IsTerminating, tali operazioni possono essere bloccate alla ricezione della risposta. La modalità di gestione migliore è pianificare l'attività su un altro thread quando viene generatoOperationCompleted, quindi uscire immediatamente da quel gestore eventi.

Si applica a