Servizi WCF di timeout
-
04-07-2019 - |
Domanda
Come funzionano i timeout in WCF? So ad esempio che è possibile configurare sendTimeout e receTimeout per un'associazione client. Ma come funzionano?
MSDN descrive sendTimeout come:
Un valore TimeSpan che specifica l'intervallo di tempo fornito per a invia l'operazione per completare. Questo valore dovrebbe essere maggiore o uguale a zero. L'impostazione predefinita è 00:01:00.
Cosa sono le operazioni di invio / ricezione?
Soluzione
Lato client:
- SendTimeout viene utilizzato per inizializzare OperationTimeout, che regola l'intera interazione per l'invio di un messaggio (inclusa la ricezione di un messaggio di risposta in un caso di richiesta-risposta). Questo timeout si applica anche quando si inviano messaggi di risposta da un metodo CallbackContract.
- OpenTimeout e CloseTimeout vengono utilizzati durante l'apertura e la chiusura dei canali (quando non viene passato alcun valore di timeout esplicito).
- ReceiveTimeout non è utilizzato.
Lato server:
- Timeout di invio, apertura e chiusura come sul client (per callback).
- ReceiveTimeout viene utilizzato dal livello ServiceFramework per inizializzare il timeout di inattività della sessione.
La fonte è Brian McNamara nei forum MSDN .
Altri suggerimenti
Vedi " Timeout in WCF e i loro valori predefiniti " http : //blogs.msdn.com/b/hongmeig/archive/2010/03/06/timeouts-in-wcf-and-their-default-values.aspx
Timeout su binding-SendTimeout, ReceiveTimeout, OpenTimeout e CloseTimeout. Possono essere impostati facilmente attraverso configurazione o codice sul Binding. Il valore predefinito per questi sono 1 minuto.
ServiceHost ha OpenTimeout e CloseTimeout. Predefinito per OpenTimeout è 1 minuto e il valore predefinito per CloseTimeout è 10 secondi.
Timeout sul canale lato client. C'è un OperationTimeout, che puoi impostarlo trasmettendo il canale su IContextChannel. Il predefinito per questo è anche 1 minuto. Ttimeout sul trasporto tcp, chiamato ChannelInitializationTimeout e il suo valore predefinito è 5 secondi.
ASPNET. Esistono timeout di arresto, proprio come la chiusura dell'host del servizio timeout, il valore predefinito è 90 secondi. ExecutionTimeout, proprio come il nostro timeout operazione, il valore predefinito è 110 secondi.
Oltre a quello che c'era in quel post, c'è anche il Timeout dell'operazione definito sul lato client. Vedi questo: