HttpApplication.Start事件不存在

时间:2019-02-12 12:57:13

标签: c# asp.net webforms

我已经很长一段时间都在寻找答案了,但没有找到答案。

我将应用程序启动称为一个阶段。

大多数文档都讨论了Global.asax文件和Application_Start方法,该方法仅在第一个请求到达Application时才被调用一次,即使此行为类似于预订事件,从技术上来说也不是事件。

虽然生命周期事件(例如BeginRequest,AuthenticateRequest等)可以通过应用程序实例作为事件进行访问,但Application.Start却不能。

我可以在HttpModule.Init()方法或Global.asax Init()方法中订阅BeginRequest事件,但不能订阅Application.Start阶段,例如:

模块

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

全局

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

跳转到.NET源代码后,我发现HttpApplicationFactory类在Global.asax文件中寻找一个名为“ Application_OnStart”或“ Application_Start”的方法,然后使用反射=> ReflectOnMethodInfoIfItLooksLikeEventHandler()调用它。

我的问题:

由于HttpApplication.Start不是事件,并且无法以其他方式从Application实例访问,因此Global.asax和“ Application_OnStart”或“ Application_Start”方法是在此应用级别添加代码的唯一希望吗?

1 个答案:

答案 0 :(得分:0)

跳转到.NET源代码后,我发现HttpApplicationFactory类正在寻找名为 Application_OnStart Application_Start < / strong>,然后使用Reflection => ReflectOnMethodInfoIfItLooksLikeEventHandler()调用它。

我没有答案,为什么HttpApplication.Start不是事件,但显然打算使用 Application_OnStart < em> Application_Start 方法。