Подтвердить что ты не робот

Почему конструктор HttpApplication вызывается несколько раз

Может кто-нибудь объяснить, почему конструктор пользовательского класса, полученный из HttpApplication, вызывается несколько раз при запуске приложения?

Моя структура кода такова:
 - Мой Глобальный класс в global.asax происходит из класса CustomApp.
 - Класс CustomApp происходит от класса HttpApplication

Класс Глобальный создается при запуске, но когда я помещаю точку останова в конструктор, он вызывается несколько раз! Я думал, должен существовать только один экземпляр класса Application?

Я не прав?

UPD: веб-сервер действительно может создать несколько экземпляров HttpApplication для обработки нескольких запросов, поступающих одновременно. Это становится особенно очевидным, если вы помещаете точку останова в конструкторе вашего HttpApplication потомка. Несколько запросов будут ожидаться от клиента (http-содержимое, файлы CSS и т.д.), И для обслуживания каждого из них веб-сервер создаст новые экземпляры HttpApp. Поэтому будьте осторожны при написании логики инициализации приложения.

4b9b3361

Ответ 1

Я считаю, что среда выполнения ASP.NET может создавать более одного HttpApplication для каждого домена приложения. Поэтому HttpApplication.Init и Ctor могут вызываться более одного раза.

Если вы хотите, чтобы код инициализации выполнялся только один раз, вы должны использовать событие Application_Start, которое будет вызываться только один раз за приложение.

Ответ 2

Пожалуйста, посмотрите сообщение global.asax в ASP.NET - это объясняет, почему существует множество экземпляров HttpApplication. В основном есть два бассейна: специальные и обычные. Обычный пул содержит экземпляры HttpApplication, которые используются запросами (каждый запрос имеет свой собственный экземпляр HttpApplication). Специальный пул содержит объекты HttpApplication, используемые для событий уровня приложения (например, Application_Start, Application_Error).