Событие HttpApplication.Start не существует - PullRequest
0 голосов
/ 12 февраля 2019

Я довольно долго искал ответ на этот вопрос, но не нашел его.

Я буду называть запуск приложения этапом.

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

Хотя события жизненного цикла такиепоскольку BeginRequest, AuthenticateRequest и т. д. доступны через экземпляр приложения как события, Application.Start - нет.

Я могу подписаться на событие BeginRequest в методе HttpModule.Init () или Global.asax Init ()метод, но не до этапа Application.Start, например:

Модуль

public class MyModule : IHttpModule
{
  public void Init(HttpApplication httpApplication)
  {
    httpApplication.BeginRequest += new EventHandler(ApplicationBeginRequest);
  }
}

Global

public class Global : HttpApplication
{
  public override void Init()
  {
    BeginRequest += new EventHandler(ApplicationBeginRequest);
  }
}

После перехода к исходному коду .NET я обнаружил, что класс HttpApplicationFactory ищет метод с именем «Application_OnStart» или «Application_Start "в файле Global.asax и затем вызывает его, используя отражение => ReflectOnMethodInfoIfItLooksLikeEventHandler ().

Мой вопрос:

Начиная с HttpApplication.Запуск не является событием и недоступен из экземпляра приложения в других модах. Являются ли Global.asax и методы Application_OnStart или Application_Start единственной надеждой добавить код на этом аппликативном уровне?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...