根据以上分析,可以可以得知:

  1、AppInitialize和PreApplicationStartMethodAttribute指向的方法被调用的时机发生在ASP.NET创建宿主环境时,属于比较早的时刻。

  2、Application_Start和HttpModule的调用时刻要晚一点。

  这个结论有用吗?

  其实我也感觉意义不大,不过分析它仅仅为了满足我的求知欲和好奇心而已,你是否也有这样的好奇心呢?

  如果你仍然好奇想知道这4种方法的执行时机的先后顺序,我也能告诉你:

  1、PreApplicationStartMethodAttribute指向的方法。

  2、App_Code中的appInitialize方法。

  3、Application_Start。

  4、HttpModule

  再补充一点:在开发环境中,当我们编译网站时,PreApplicationStartMethodAttribute指向的方法可能会被调用,这处决于类库的程序集是否发生了修改。

  到底该选择哪种初始化方法?

  给大家介绍了4种在ASP.NET中执行初始化的方法,或许有些人会想:到底该选择哪种初始化方法呢?

  的确,方法越多越让人迷惑。

  下面的观点仅代表我个人的建议,你也可以根据自己的喜好来选择。

  1、优先选择Application_Start(虽然IIS的经典模式下需要多写点代码),因为任何人找初始化代码时都会想到那里,便于其他人维护。

  2、AppInitialize方法虽然使用简单,但它并不适合于WebApplication项目。

  3、PreApplicationStartMethodAttribute只支持ASP.NET 4.0以上版本,且尤其适合于类库的内部初始化。

  4、当以上方法都不可行时,HttpModule将成为后的救命稻草,它适合所有ASP.NET版本。