Je suis un peu perplexe avec celui-ci, et j'espérais pouvoir trouver des réponses ici.La communication WCF entre deux serveurs se bloque après le processus de recyclage IIS7
Fondamentalement, j'ai une application ASP.NET qui fonctionne sur 2 serveurs. Le serveur A a toute la logique métier/accès aux données exposée en tant que services Web, et le serveur B a le site Web qui parle à ces services (via WCF, avec la liaison net.tcp).
Le problème se produit quelques secondes après le démarrage d'un recyclage de mon pool d'applications par IIS sur le serveur A. Le recyclage se produit après le délai imparti (en utilisant la valeur par défaut de 29 heures définie dans IIS).
Dans le journal du serveur (du serveur A):
Un processus de travail avec l'identifiant du processus '####' pool d'applications au service 'AppPoolName' a demandé un recyclage parce que le processus de travail atteint son délai de traitement autorisé.
Je crois que c'est un comportement normal. Le problème est que quelques secondes plus tard, je reçois cette exception sur le serveur B:
Ce canal ne peut plus être utilisé pour envoyer des messages comme la session de sortie a été fermée automatiquement en raison d'un initié serveur fermer. désactive la fermeture automatique en définissant DispatchRuntime.AutomaticInputSessionShutdown sur false, ou modifiez le protocole d'arrêt avec le serveur distant .
Cela ne se produit pas à chaque recyclage; Je suppose que cela arrive quand quelqu'un frappe le site avec une demande PENDANT que le recyclage se produit.
En outre, mon application est en panne jusqu'à ce que j'intervienne; cette exception continue de se produire chaque fois qu'une requête ultérieure est effectuée sur la page. J'interviens en éditant le web.config (en ajoutant un espace ou quelque chose de bénin à la fin du fichier) et en l'enregistrant - je suppose que cela provoque la recompilation de mon application et la restauration des services. J'ai aussi expérimenté avec l'exécution d'un fichier séquentiel qui fait cela pour moi chaque fois que l'exception se produit;)
Maintenant, je pouvais à peine trouver des informations sur cette exception, et j'ai cherché pendant un moment. La plupart des informations que j'ai trouvées se rapportent aux paramètres WCF que je n'utilise pas.
J'ai déjà lu sur "DispatchRuntime.AutomaticInputSessionShutdown" et je ne pense pas que cela se rapporte à cette situation. Cette propriété particulière fait référence à l'arrêt automatique du service en réponse au comportement côté client, ce qui n'est pas le cas ici. Ici, le service est arrêté à cause d'IIS. J'ai lu this qui a fait l'objet d'un certain travail pour rétablir le service automatiquement, mais je cherche vraiment à comprendre ce qui se passe ici, pas à le contourner!
J'ai commencé à jouer avec les paramètres de IIS7, en activant/désactivant spécifiquement le recyclage superposé et en augmentant les temps de démarrage et d'arrêt du processus. Je me demande s'il est sûr d'arrêter complètement le recyclage (je crois que si je mets 0 pour l'intervalle de temps de recyclage?) Mais encore une fois, je veux savoir ce qui se passe!
De toute façon, si vous avez besoin de plus d'informations, faites le moi savoir. Merci d'avance!
Je suis confronté au même problème. Avez-vous trouvé une solution? La réponse acceptée ne semble pas être la solution pour moi. –