2010-05-31 3 views
8

Y a-t-il quelque chose dans la configuration de WCF qui définit un délai d'attente pour l'exécution d'une demande au niveau du service? Par exemple. Le service WCF cessera d'exécuter la demande après un certain temps. J'ai un service qui fait du travail en fonction de la contribution du client. Dans certains cas, un tel appel peut prendre trop de temps. Je veux limiter le temps d'exécution de ces demandes du côté service, pas du client en utilisant SendTimeout. Je connais la propriété OperationTimeout, mais elle n'annule pas la demande de service, elle indique simplement à un client que la requête est expirée.Comment limiter l'heure d'exécution d'une demande de service WCF?

Répondre

16

En termes généraux, rien ne peut l'imposer totalement. Malheureusement, c'est une de ces choses que le moteur d'exécution ne peut vraiment pas appliquer sans laisser l'état foiré (à peu près la seule alternative serait d'abandonner le thread en cours d'exécution, et cela a un tas de conséquences indésirables). Donc, fondamentalement, si c'est quelque chose que vous voulez appliquer, il est préférable de concevoir votre service pour traiter cela afin que votre opération ait des points d'interruption sûrs où l'opération peut être terminée si le temps d'exécution maximal a été dépassé.

Bien que ce soit beaucoup plus de travail, vous serez probablement plus satisfait à long terme.

+0

On dirait qu'il n'y a pas d'autre solution pour l'instant. Merci – Kamarey

+1

+1 Merci pour cela. Cette information n'est pas disponible dans beaucoup d'endroits. MS semble passer sous silence toute la mécanique de timeout de wcf. –

Questions connexes