web-dev-qa-db-fra.com

Quand utiliser Application_Start vs Init dans Global.asax?

Je me demande dans quelles circonstances je devrais mettre le code d'initialisation de l'application dans Application_Start() vs Init() dans mon fichier Global.asax?

La distinction entre les deux ne me semble pas très évidente, à part que Application_start Est appelé en premier, puis Init().

  • Pourquoi devrais-je utiliser l'un sur l'autre?
  • Cela fait-il vraiment une différence?
  • Quels changements dans l'état de l'application entre les deux événements?

Jusqu'à présent, le seul véritable pointeur que je puisse trouver est que IHttpModule n'a qu'une méthode Init(), donc si ce que je fais peut à un moment donné être mieux adapté pour implémenter IHttpModule Je devrais utiliser la méthode Init() de Global.asax, Si rien d'autre pour la cohérence.

74
roryf

À partir des documents MSDN :

Les méthodes Application_Start et Application_End sont des méthodes spéciales qui ne représentent pas les événements HttpApplication. ASP.NET les appelle une fois pour la durée de vie du domaine d'application, pas pour chaque instance HttpApplication .

Init:

Appelé une fois pour chaque instance de la classe HttpApplication après la création de tous les modules.

MISE À JOUR: si vous devez vous assurer qu'un certain code n'est appelé qu'une seule fois dans l'application. cycle de vie, Application_Start est une meilleure solution. Exemples: configurer log4net?

84
Igor Brejc

Oui

Il y a des différences entre eux. L'événement Application_Start () est appelé une seule fois tandis que la méthode Init () est appelée à chaque fois lorsque l'instance de l'application est créée.

11
Abid Mahmood