Когда PreApplicationStartMethod действительно запускается? - PullRequest
19 голосов
/ 11 мая 2011

При использовании метода WebActivator PreApplicationStart, что на самом деле запускает методы, связанные с этим, для запуска? Когда IIS7 запустил пул приложений? Когда первый запрос сделан к веб-серверу? Что-то другое? Если у вас есть ответ, не могли бы вы также указать, откуда вы получили эту информацию?

Изменяет ли что-нибудь из этого в IIS 7.5?

Ответы [ 2 ]

25 голосов
/ 11 мая 2011

WebActivator PreApplicationStart фактически использует ASP.NET PreApplicationStartMethodAttribute (см. эту ссылку, чтобы увидеть, как работает веб-активатор).

PreApplicationStartMethodAttribute работает, когда среда выполнения ASP.NET запускает приложение, и код запускается рано в конвейере, даже до того, как событие app_start было запущено. Таким образом, чтобы ответить на ваш вопрос, триггер произойдет, когда первый запрос будет сделан к веб-серверу (который, в свою очередь, пинает при запуске приложения).

Обратите внимание, что триггер связан с запуском приложения ASP.NET, а не с пулом приложений. Ваш пул приложений может быть запущен из-за какого-то другого приложения (может быть не приложения ASP.NET), но когда первый запрос поступает для приложения ASP.NET, этот триггер может произойти (для конкретного приложения), потому что приложение запускается.

Если вы используете функцию автозапуск , то IIS перезапустит ваше приложение при перезапуске пула приложений и, таким образом, будет запущен PreApplicationStart.

8 голосов
/ 12 декабря 2012

Небольшое дополнение к ответу @ VinayC: если вы добавите точку останова в свой PreApplicationStartMehod и отладите свое веб-приложение, вы можете увидеть, что оно вызывается при каждом запросе.Я легко подтвердил, что это не обычное поведение, записав файл журнала в моем PreApplicationStartMethod.Если этот метод не подключен к отладчику, он не выполняется при каждом запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...