Avancé: Combien de fois ne HttpModule méthode Init() appelée lors de l'application de la vie?

Web d'initialisation de l'application est comme suit:

  1. Comme nous le savons, quand IIS reçoit la première demande d'un particulier Asp.net demande de ressources, IIS crée une instance d'un HttpApplication (défini dans global.asax code-behind).
  2. Lors de cette nouvelle instance est créée, c'est l'initialisation arrive que des vérifications de tous configurés HTTP modules.
  3. Tous les modules sont ensuite instancié et de mettre en application Modules collection (de type HttpModuleCollection)
  4. modules sont bouclés et leurs Init() méthode est appelée (lorsqu'ils s'inscrivent à la demande événements)

Pour autant que je comprends le scénario ci-dessus se produit lorsqu'une application web est démarré/initialisé (par conséquent, l'application de début de l'événement).

Ce qui se passe avec les modules?

Sont-ils (re)instatiated sur chaque demande ou réutilisée de la Modules propriété sur chaque consécutives demande, alors que l'application web est vivant? Comme je comprends IIS et Asp.net ils sont réutilisés par le biais de l'ensemble de la durée de vie d'une application web.

S'ils sont réutilisés, peut-on supposer que leur Init() méthode est en fait un pseudo gestionnaire d'événement pour l'application de début de l'événement? Le truc, c'est que nous ne pouvez pas joindre à la demande les événements de niveau dans les modules http. Mais si elles sont réutilisées nous pourrions utiliser Init() que l'application de début de l'événement et de faire tout ce que nous avions mis en global.asax à la place.

Question

Peut-on supposer que le module Init() méthode est appelée seulement sur l'application de début de l'événement? Pourrions-nous utiliser cette hypothèse c'est à dire enregistrer des itinéraires pour les applications dont les global.asax codebehind nous ne pouvons pas changer? web.config est généralement accessible et nous pouvons changer la façon dont nous voulons.

Serait-ce fonctionne réellement?

Informations supplémentaires

Nous pouvons vérifier HttpApplication code et vérifier sa InitModulesCommon() méthode. Ce seul fait les appels Init() de chaque enregistré HTTP module. Ce qui est plus intéressant est que cette méthode est utilisée uniquement par InitIntegratedModules() et InitModules() méthodes. Qui sont tous deux utilisés seulement dans HttpApplication.InitInternal() méthode. C'est la base de mes hypothèses, mais je voudrais savoir si quelqu'un a abusé de IHttpModule.Init() pour l'application de début de l'événement.