Handler “ExtensionlessUrlHandler-Intégré-4.0” a un mauvais module “ManagedPipelineHandler” dans sa liste de module

Pour être honnête, j'ai essayé de mettre un sale coup sur IIS et juste quand je pensais que j'allais sortir avec elle, j'ai réalisé que ma solution de contournement ne fonctionne pas. Voici ce que j'ai essayé de faire:

1) j'ai ASP.NET l'application qui a Preloader classe qui hérite IProcessHostPreloadClient et fait toutes les lourds initialisation dans Précontrainte méthode de la mise en œuvre (application est complexe et c'est une partie d'un vaste système, donc il faut environ 2 minutes pour établir des connexions avec tous les services nécessaires et de pré-instancier une certaine Unité des inscriptions).

2) j'ai beaucoup de travail qui doit être fait sur l'arrêt de l'application (désabonnement, la déconnexion, l'élimination,...), et je crois que le meilleur endroit pour le faire est dans *Application_End* méthode situé dans Mondiale.asax.

3) Tout fonctionne très bien quand j'ai une activité de l'utilisateur (première demande après l'Application de la Piscine qui contient web susmentionné application est démarrée entraînera *Application_Start* pour être appelés, et par la suite *Application_End* est appelée sur le Pool d'Applications de l'arrêter ou de recycler), mais des problèmes se produisent lorsqu'il n'y a aucune activité de l'utilisateur et de l'application tente de se relancer après avoir été active pendant 48 heures (configuré exigence). Puisqu'il n'y a pas de demande, demande officiellement de ne pas commencer. Ergo, il ne peut pas être gracieusement arrêté depuis *Application_End* ne sera pas appelé.

4) Maintenant vient le désordre de la partie... j'ai essayé de faire une demande de code à la fin de la Précontrainte méthode, et cela a fonctionné. Mais cette solution semble mauvais pour moi, même si elle a fonctionné. Donc, j'ai essayé beaucoup de choses, et la dernière chose que j'ai essayé était ceci:

SimpleWorkerRequest swr = new SimpleWorkerRequest(string.Empty, string.Empty, tw);
HttpRuntime.ProcessRequest(swr);

... et qui a fait de l'effet. *Application_Start* a été appelé, (je l'ai vérifié en réponse, on a contenant de la page de connexion qui était censé être affiché dans la demande initiale) et sur le Pool d'Applications de l'arrêt de l'application s'est terminée normalement faire le travail nécessaire en *Application_End*.

MAIS

Après l'application a été commencé (préchargés et initié) de cette manière, c'est ce qui est arrivé quand j'ai voulu atteindre application via un navigateur Web:

Erreur HTTP 500.21 - Erreur Interne du Serveur
Handler "ExtensionlessUrlHandler-Intégré-4.0" a un mauvais module "ManagedPipelineHandler" dans sa liste de module

Je suis incapable de le comprendre. Quelqu'un peut-il me dire pourquoi cela arrive et comment le résoudre?

Si je n'ai pas trouver cela, je vais revenir à la première solution (envoi d'OBTENIR la demande de code), mais ce problème de bug moi, puisque je n'ai même pas une idée de ce qui est faux.

  • quelle est la version de IIS utilisez-vous?
  • IIS 7.5 (7.5.7600.16385)
  • Pas une réponse directe à votre question, mais pour les autres utilisateurs ayant le même problème et considère que vous disposez d'une connexion internet face à la demande: vous pouvez simplement utiliser un service externe comme uptimerobot.com pour toucher votre demande tous les X temps. Vous gardez votre application en cours d'exécution + vous avez l'avantage du service (disponibilité, alertes, etc).
  • Même si l'application que je suis en train de travailler sur n'est pas connecté à internet, vous m'avez donné une bonne idée. Je pourrais utiliser un équilibreur de charge pour faire périodique toucher par la définition de l'état de santé de la vérification de type à Simple HTTP GET. Merci
InformationsquelleAutor Ivan Peric | 2012-10-31