Когда PreApplicationStartMethod действительно запускается?

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

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

2 ответа

Решение

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

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

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

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

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

Другие вопросы по тегам