2008-10-23 20 views
61

Comment les délais d'attente fonctionnent-ils dans WCF? Je sais par exemple que vous pouvez configurer sendTimeout et receiveTimeout pour une liaison de clients. Mais comment fonctionnent-ils?Timeouts Services WCF

MSDN décrit sendTimeout comme:

Une valeur TimeSpan qui spécifie l'intervalle de temps prévu pour terminer une opération d'envoi . Cette valeur doit être supérieure ou égale à à zéro. La valeur par défaut est 00:01:00.

Que sont les opérations d'envoi/de réception?

Répondre

61

côté client:

  • SendTimeout est utilisé pour initialiser le OperationTimeout, qui régit l'ensemble de l'interaction pour l'envoi d'un message (comprenant la réception d'un message de réponse dans un cas requête-réponse). Ce délai d'expiration s'applique également lors de l'envoi de messages de réponse à partir d'une méthode CallbackContract.
  • OpenTimeout et CloseTimeout sont utilisés lors de l'ouverture et de la fermeture de canaux (lorsqu'aucune valeur de délai explicite n'est transmise).
  • ReceiveTimeout n'est pas utilisé.

côté serveur:

  • Envoyer, Ouvrir, Fermer Timeout même que sur le client (pour Callbacks). ReceiveTimeout est utilisé par la couche ServiceFramework pour initialiser le délai d'inactivité de la session.

La source est Brian McNamara on MSDN forums.

+0

Ce lien est mort, quelqu'un peut-il le mettre à jour? – BrettRobi

+5

Lien fonctionne pour moi – Brian

+0

Si je définis OperationTimeout à une valeur très élevée, et sendTimeout à une valeur ridiculement petite, ce qui en substance devrait expirer, je ne reçois jamais une exception de délai d'expiration. Quelqu'un peut-il me dire comment je peux mettre en place un exemple pour déclencher l'exception sendTimeout? –

9

Voir "Temporisations dans WCF et leurs valeurs par défaut" http://blogs.msdn.com/b/hongmeig/archive/2010/03/06/timeouts-in-wcf-and-their-default-values.aspx

sur la liaison Timeouts-SendTimeout, ReceiveTimeout, OpenTimeout et CloseTimeout. Ils peuvent être configurés facilement via la configuration ou le code sur la liaison. La valeur par défaut pour ceux-ci est 1 minute.

ServiceHost a OpenTimeout et CloseTimeout. La valeur par défaut pour OpenTimeout est de 1 minute et la valeur par défaut pour CloseTimeout est de 10 secondes.

Temporisations sur le canal côté client. Il existe un OperationTimeout, que vous pouvez définir en lançant le canal à IContextChannel. La valeur par défaut pour cela est également 1 minute. Ttimeout sur le transport TCP, appelé ChannelInitializationTimeout, et sa valeur par défaut est 5 secondes.

ASPNET.Il y a des délais d'arrêt, tout comme le délai d'expiration de l'hôte de service , la valeur par défaut est de 90 secondes. ExecutionTimeout, tout comme notre timeout d'opération , la valeur par défaut est de 110 secondes.