Когда использовать Application_Start против Init в Global.asax? - PullRequest
74 голосов
/ 06 апреля 2009

Мне интересно, при каких обстоятельствах мне следует помещать код инициализации приложения в Application_Start() против Init() в моем файле Global.asax?

Различие между этими двумя не кажется мне очевидным, за исключением того, что сначала вызывается Application_start, а затем Init().

  • Зачем мне использовать один над другим?
  • Это действительно имеет значение?
  • Какие изменения в состоянии приложения между двумя событиями?

Пока единственный реальный указатель, который я могу найти, это то, что IHttpModule имеет только метод Init(), поэтому, если то, что я делаю, может в какой-то момент лучше подходить для реализации IHttpModule, я должен использовать Init() метод Global.asax, если не более для согласованности.

Ответы [ 2 ]

83 голосов
/ 06 апреля 2009

Из документов MSDN :

Методы Application_Start и Application_End - это специальные методы, которые не представляют события HttpApplication. ASP.NET вызывает их один раз за время существования домена приложения, а не для каждого экземпляра HttpApplication .

Init:

Вызывается один раз для каждого экземпляра HttpApplication класс в конце концов модули созданы.

ОБНОВЛЕНИЕ: если вам нужно убедиться, что определенный код вызывается только один раз в приложении. жизненный цикл, Application_Start - лучшее решение. Примеры: настройка log4net?

11 голосов
/ 02 июня 2009

Да

Между ними есть различия. Событие Application_Start () вызывается только один раз, а метод Init () вызывается каждый раз при создании экземпляра приложения.

...