В Global
в качестве альтернативы приложению AutoEventWireups
кажется, что события выставляются для большинства базовых событий приложения (BeginRequest, AuthorizeRequest, Error
., и т. д. ), а также набор асинхронных методов, таких как AddOnBeginRequestAsync
и т. д. Однако я не могу найти эквивалентное событие для ApplicationStart
!
Итак, мой вопрос: можно ли как-то подписаться на «то же самое» событие, к которому подключен метод AutoEventWireup
Application_(On)Start
?
public class Global : HttpApplication
{
public Global()
{
// I can do this...
base.BeginRequest += new EventHandler(Global_BeginRequest);
// Or even AddOnBeginRequestAsync();
// But how can I do this?
base.ApplicationStart += new EventHandler(GlobalApplication_Start);
}
protected void Global_BeginRequest(object sender, EventArgs e)
{
//...
}
protected void Global_ApplicationStart(object sender, EventArgs e)
{
//...
}
}
(Ради интереса... есть ли способ отключить AutoEventWireups
в Global.asax?. Использование атрибута AutoEventWireup = "false" работает только на страницах aspx )
. Изменить-кажется, что ApplicationStart и ApplicationEnd «являются специальными методами, которые не представляют события HttpApplication ». Так что, возможно, я лаю не по тому дереву.
Изменить Re :Зачем мне это? К сожалению, у корпоративного клиента есть структура, в соответствии с которой новые приложения должны наследовать свой пользовательский класс HttpApplication
, и FWR, их HttpApplication
уже внедрил автоподключение Application_(On)Start
, а это означает, что мне нужно было найти другой способ переопределить Проводка фреймворка, чтобы я мог загрузить свой контейнер IoC и карты Automapper. Согласно ответу Ллойда, я также мог бы загрузиться в ctor или Init()
, хотя это не совсем то же самое . В конечном итоге я смог изменить корпоративную структуру, чтобы разрешить несколько подписок.