HttpApplication.Start事件不存在。

问题描述 投票:1回答:1

我找了很久都没有找到答案。

我将Application start称为一个阶段。

大多数的文档都在谈论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);
  }
}

我的问题是:由于没有从Application实例中访问HttpApplication.Start事件,Global.asax和 "Application_Start "方法是否是Application启动阶段的唯一希望?

由于没有从Application实例中访问HttpApplication.Start事件,Global.asax和 "Application_Start "方法是否是订阅Application启动阶段的唯一希望?

c# asp.net webforms
1个回答
0
投票

在跳转到.NET源码后,我发现HttpApplicationFactory类中有一个方法叫作 应用程序_OnStart应用程序_启动 在Global.asax文件中,然后使用reflection => ReflectOnMethodInfoIfItLooksLikeEventHandler()来调用它。

我没有答案,为什么HttpApplication.Start不是事件,但它显然是要以类似事件的方式处理,使用的是 应用程序_OnStart应用程序_启动 方法;

© www.soinside.com 2019 - 2024. All rights reserved.