Предпочтительный способ установки и запуска кода в Application_Start

Каков предпочтительный способ подключения и запуска некоторого кода в Application_Start и Application_Endrequest без необходимости каждый раз помещать код в класс MvcApplication?

Может быть, есть событие, атрибут или что-то, что я могу подключить в asp.net 4?

2 ответа

Решение

Это неправильное утверждение, которое "позволяет подключить код для запуска до компиляции приложения".

Создаваемые вами классы WebActivator на самом деле компилируются в сборку, но позволяют подключаться к 3 событиям во время выполнения:

1.) PreApplicationStartMethod 2.) PostApplicationSTartMethod 3.) ApplicationShutdownMethod

Из описания Дэвида Эббо:

"WebActivator - это пакет NuGet, который позволяет другим пакетам легко вносить код запуска и завершения работы в веб-приложение. Это дает гораздо более чистое решение, чем необходимость изменять global.asax с помощью логики запуска из многих пакетов".

Использование WebActivator не ограничивается кодом запуска для других пакетов, его также можно использовать для кода запуска (начальной загрузки) для вашего приложения.

Например, я использую его для установки и настройки моих зависимостей Unity, моей настройки Combres и моей настройки 51DegreesMobi в недавнем проекте, который я завершил с использованием MVC3. Это позволяет мне иметь отдельный файл класса для каждого из них, не загромождая и не вводя ни одной строки кода в Global.asax.

Это также намного лучшая альтернатива.NET 4 PreApplicationStartMethod в том, что у вас может быть много классов, имеющих WebActivator.PreStartupMethod, и они ВСЕ будут работать до App-Start, в отличие от атрибута.NET 4, в который, как вам кажется, вы Разрешено использовать только один раз.

В классе HttpApplication много событий. Тем не менее, вам все еще нужно что-то, что загрузит событие.

Вы можете взглянуть на PreApplicationStartAttribute. Это позволяет подключить код для запуска до того, как приложение будет скомпилировано (хотя экземпляр Application будет недоступен на раннем этапе).

Дэвид Эббо также создал аналогичную систему под названием WebActivator.

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