Предпочтительный способ настройки и запуска кода в Application_Start - PullRequest
3 голосов
/ 17 ноября 2010

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

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

Ответы [ 2 ]

3 голосов
/ 17 ноября 2010

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

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

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

2 голосов
/ 27 января 2012

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

Создаваемые классы 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, в котором Я считаю, что вы можете использовать только один раз.

...