2010-09-22 6 views
2

J'ai un service duplex HTTP de WCF Silverlight (3) configuré dans IIS. Cela fonctionne merveilleusement jusqu'à ce que je réutilise le ApplicationPool dans IIS.Problèmes du service duplex WCF avec le recyclage IIS AppPool

Les clients SL connectés qui appellent ensuite des méthodes sur ce service duplex commencent alors à obtenir TimeoutExceptions/CommunicationExceptions du service Web. Augmenter les délais d'attente du côté client n'aide pas.

Le recyclage ne semble pas détruire la connexion http (duplex) sous-jacente entre le serveur et le client. Lorsqu'un client appelle ensuite une méthode sur ce service, IIS est incapable de le traiter correctement.

Si je recrée le proxy sur le client, tout fonctionne correctement. Le problème est cependant, comment puis-je savoir que je dois rétablir la connexion au serveur? not Tous les exemples sur le Web montrent simplement comment gérer les clients déconnectés, mais pas ce que vous faites au cas où le service Web a été recyclé. Le redémarrage complet d'IIS est correct, car la connexion http est fermée dans ce cas.

Toute entrée est grandement appréciée.

+0

Je recommanderais d'utiliser l'auto-hébergement pour tout travail sérieux sur le WCF, et encore plus pour les scénarios duplex. Ce n'est vraiment pas si difficile d'héberger un service WCF, et ensuite vous ne dépendez pas de choses comme le recyclage d'AppPools à volonté .... –

Répondre

1

Il est attendu un comportement. C'est ainsi que fonctionne le recto-verso. La communication http duplex utilise une session fiable. Cela signifie que tout fonctionne bien jusqu'à ce que l'un des côtés soit fermé. Si l'AppPool est recyclé, les instances de service en cours sont terminées. La prochaine fois que le client essaie de communiquer avec le service, il n'est pas en mesure de l'atteindre (l'instance n'existe pas déjà) mais en raison d'une session fiable, il l'essaie plusieurs fois, puis expire. La seule solution après expiration est d'abandonner le proxy actuel, de créer un nouveau proxy client et de lancer une nouvelle communication duplex.

+2

Oui, je suis arrivé à la même conclusion. Nous sommes en train d'attraper l'exception sur le client et de rétablir la connexion. –

Questions connexes