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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ASP.NETCore

在.NET Core程序中设置全局异常处理

但是在.NET Core中并没有AppDomain的相关实现,至少在.NET Core最新的发布版本里没有。

1263
来自专栏葡萄城控件技术团队

如何遍历当前进程中的AppDomain

.Net Framework居然没有提供托管的接口来获取当前进程中的其它AppDomain!所以,我们只有借助承载接口(Hosting Interfaces)来...

2268
来自专栏大内老A

ASP.NET Core的路由[3]:Router的创建者——RouteBuilder

在《注册URL模式与HttpHandler的映射关系》演示的实例中,我们总是利用一个RouteBuilder对象来为RouterMiddleware中间件创建所...

4334
来自专栏大内老A

.NET Core采用的全新配置系统[7]: 将配置保存在数据库中

我们在《聊聊默认支持的各种配置源》和《深入了解三种针对文件(JSON、XML与INI)的配置源》对配置模型中默认提供的各种ConfigurationSource...

2158
来自专栏逆向技术

常见注入手法第四讲,SetWindowsHookEx全局钩子注入.以及注入QQ32位实战.

钩子回调根据SetWindowsHookEx参数1来设定的.比如如果我们设置WH_CBT 那么我们设置的回调函数就是CBT回调. 具体查询MSDN

1.7K2
来自专栏GreenLeaves

九、将cs文件快速的转换成可执行文件和响应文件(配置编译开关的文件)

1、将包含多个类型的源代码文件转换为可以部署的文件。有如下Program.cs的文件,代码如下: public sealed class Program...

3087
来自专栏偏前端工程师的驿站

.NET魔法堂:工程构建基石->MSBuild

一、前言                               MSBuild是一个既熟悉又陌生的名字,Visual Studio的项目加载和构建均通过M...

4658
来自专栏开发与安全

linux系统编程之信号(四):信号的捕捉与sigaction函数

一、内核如何实现信号的捕捉 如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。由于信号处理函数的代码是在用户空间的,处理过程比较复...

3190
来自专栏恰童鞋骚年

ASP.Net MVC开发基础学习笔记:三、Razor视图引擎、控制器与路由机制学习

  在MVC3.0版本的时候,微软终于引入了第二种模板引擎:Razor。在这之前,我们一直在使用WebForm时代沿留下来的ASPX引擎或者第三方的NVeloc...

1223
来自专栏林德熙的博客

win10 uwp 读取文本GBK错误

本文讲的是解决UWP文本GBK打开乱码错误,如何去读取GBK,包括网页GBK。最后本文给出一个方法追加文本。

1351

扫码关注云+社区

领取腾讯云代金券