Что делает WebActivator?

Этот код был сгенерирован для меня после того, как сначала был добавлен код инфраструктуры сущностей для SQL Server CE с использованием NuGet. Они не внесли никаких изменений ни в один другой файл. Файл SQLCEEntityFramework.cs создан и помещен в папку App_Start.

Означает ли это, что он автоматически выполняется или что-то в этом роде? То же самое произошло, когда я добавил Ninject для MVC 3. Код не был добавлен в файл global.ascx, поэтому я понятия не имею, работает ли он по принципу plug and play или мне нужно что-то настроить.

[assembly: WebActivator.PreApplicationStartMethod(typeof(StackTorrents.WebUI.App_Start.SQLCEEntityFramework), "Start")]

person Shawn Mclean    schedule 28.04.2011    source источник
comment
Эта ссылка: (Определить порядок инициализации классов WebActivator.PreApplicationStartMethod) может помочь тем, кому важен порядок выполнения.   -  person Iman Mahmoudinasab    schedule 28.10.2013


Ответы (2)


В соответствии с:

http://haacked.com/archive/2010/05/16/three-hidden-extensibility-gems-in-asp-net-4.aspx

Этот новый атрибут позволяет запускать код на ранней стадии конвейера ASP.NET при запуске приложения. Я имею в виду очень рано, даже до Application_Start. Это также происходит до того, как код в вашей папке App_code (при условии, что у вас есть какой-либо код) был скомпилирован. Чтобы использовать этот атрибут, создайте библиотеку классов и добавьте этот атрибут в качестве атрибута уровня сборки. Обычно это можно добавить в класс AssemblyInfo.cs в папке Properties.

person John Farrell    schedule 28.04.2011
comment
PreApplicationStartMethodAttribute из платформы .NET позволяет использовать только один атрибут для каждой сборки. Что наиболее важно, WebActivator предоставляет собственную реализацию атрибута, которая разрешает несколько экземпляров каждой сборки. - person Ed Chapel; 28.04.2011
comment
@Ed Chapel - означает ли это, что когда я импортировал SQLCE4 из nuget, а также из ninject, у обоих был PreApplicationStartMethod. Только случайный будет выполнен? - person Shawn Mclean; 03.05.2011
comment
Я не знаю о SQLCE4, но ninject использует WebActivator. Я уверен, что если вы придерживаетесь атрибута WebActivator, все атрибуты PreApplicationStartMethod будут работать. - person Ed Chapel; 03.05.2011
comment
Я рад, что нашел это. Вы больше не можете искать исключения переполнения стека в Google. - person Jordan; 26.06.2015

Чтобы уточнить, это дает вам возможность подключиться к нескольким событиям запуска и закрытия приложения БЕЗ необходимости изменять какие-либо существующие файлы кода (ранее вам приходилось редактировать Globals.asax.cs).

В основном это имеет большое значение при создании пакетов, поскольку эти события действительно полезны для начальной загрузки модулей Http, и действительно сложно писать код в существующие файлы.

person George Mauer    schedule 16.03.2013