【转】在ASP.NET应用启动的时候初始化的几种方法

时间:2024-01-08 15:32:32

ASP.NET 4.0 之前,有两种方法:通过Global.asax 中的 Application_Start 事件启动,或者通过定义在 App_Code 文件夹中任意类中的AppInitialize 静态方法。方法的原型定义如下:

  1. public static void AppInitialize()

AppInitialize 方法是 ASP.NET 中一个特殊的方法,在网站应用程序启动之后进行初始化的时候将被首先调用。这个方法只能出现一次,只能出现在 App_Code 中定义的一个类中,如果出现在两个类中,ASP.NET 将会报编译错误。这个方法甚至不能定义在一个程序集中定义的类中。

在ASP.NET 4.0中,有一个很有趣的特色:Pre Application Start Method,新增的Pre Application Start Method机制则稍微改变了这个流程(原本在ASP.NET中,当应用程序起始时首先被请求的是Global.asax中的Application_Start函数),当某个Assembly标示了PreApplicationStar Method Attribute后,ASP.NET会在应用程序起始时呼叫指定的函式,这个动作发生在Global.asax中的Application_Start之前,而且是自动扫描BIN目录中的的Assemblys来进行的。具体可以参考ASP.NET 4.0 – Pre Application Start Method

总结一下,有三种方法可以用来初始化ASP.NET应用程序:

1、在Global.asax中的Application_Start函数里完成初始化,这个也是用的最多的,不具体说明了。

2、在App_Code 文件夹中任意类中的AppInitialize 静态方法. App_Code目录是一个非常特殊的目录,特殊到很多规则你都不知道,ASP.NET对这个目录的文件会做一些特殊的处理。就比如AppInitialize静态方法的执行规则:

  • AppInitialize静态方法必须是在App_Code目录下。
  • AppInitialize静态方法在App_Code目录下不允许被定义两次。
  • AppInitialize方法在编译时就被特殊处理了,不能再外部的应用程序集dll里定义。

3、在PreApplicationStartMethod 我们在上边初始化之前完成网站的初始化,这样,我们可以在一个类库项目中使用这个特征来标记需要在网站中提前初始化的方法。具体可以参考ASP.NET 4.0 – Pre Application Start Method

来源:http://www.cnblogs.com/shanyou/archive/2011/10/09/2204043.html