Что запускается первым Application_Start или OnStart WebRole?

У меня есть проект MVC в Windows Azure. В этом проекте есть WebRole с методом OnStart. И я хочу знать, что запускается первым Application_Start Global.asax или OnStart WebRole?


person Pavel F    schedule 15.07.2011    source источник


Ответы (3)


Почти уверен, что это недетерминировано после SDK 1.3. Попытка синхронизировать что-то от одного к другому просто закончится состоянием гонки.

До версии 1.3 Hosted Worker Core (HWC) размещался в RoleEntryPoint, поэтому был детерминированный запуск (OnStart, Application_OnStart, IIRC). Однако теперь, когда IIS размещает веб-сайт, именно IISConfigurator.exe создает пул приложений и т. д., и в конечном итоге w3wp.exe размещает ваш веб-сайт. Это другой процесс, чем ваш RoleEntryPoint, поэтому любой из них может начаться первым.

person dunnry    schedule 15.07.2011

Я не могу найти 100% полные ссылки на это (лучшее, что я видел, это http://blog.syntaxc4.net/?p=271), но я считаю, что последовательность такова:

  • Запускаются любые задачи запуска
  • Вызывается метод WebRole OnStart
  • Вызывается метод WebRole Run(), и в то же время IIS запускает веб-сайты, поэтому в этот момент Application_Start будет вызван в первый раз.
person Stuart    schedule 15.07.2011

Согласно документации Microsoft, метод Application_Start вызывается после Метод OnStart.

person Brendan L    schedule 30.10.2017