ASP.NET MVC PostAuthorizeRequest (и другие события) не запускаются

#asp.net-mvc #events #global-asax

#asp.net-mvc #Мероприятия #глобальный-asax

Вопрос:

Я работаю над проектом MVCForum (в codeplex) и хочу удалить как можно больше кода из глобального файла.asax — в основном, чтобы упростить интеграцию MVCForum в существующий ASP.NET Приложение MVC без изменения слишком большого количества кода.

Мне нужно подключиться к событиям приложения, чтобы иметь возможность установить правильную CultureInfo (в зависимости от выбора пользователей и т.д.) и другие вещи.

Это не проблема с этим в глобальном файле.asax:

 protected void Application_PostAuthorizeRequest() {
       // Some code here!
}
  

Но когда я пытаюсь переместить код в другое место, событие никогда не происходит.
То, что я делаю, это:

 public MVCForumBootstrapper(HttpApplication app) {
    app.PostAuthorizeRequest  = new EventHandler(app_PostAuthorizeRequest);
}
  

И это в глобальном.asax

     protected void Application_Start() {
      var strapper = new MVCForumBootstrapper(this);
    }
  

Я ожидал, что это будет работать точно так же?

Что я делаю не так / я пропустил?

Спасибо, Стин

Ответ №1:

Вы должны сделать это в Init методе Global.asax. В Application_Start слишком поздно перехватывать события:

 public override void Init()
{
    base.Init();
    var strapper = new MVCForumBootstrapper(this);
}