asp.net mvc global.asax文件详解
一、文件概述
global.asax这个文件包含全局应用程序事件的事件处理程序。它响应应用程序级别和会话级别事件的代码。
运行时, Global.asax 将被编译成一个动态生成的 .NET Framework 类,该类是从HttpApplication基类派生的。
因此在global.asax中的代码可以访问HttpApplication类中所有的public或者protected的成员
global.asax不被用户直接请求,但global.asax中的代码会被自动执行来响应特定的应用程序事件。
global.asax是可选的,而且在一个web项目中是唯一的,它应该处于网站的根目录。
二、一个请求的完整过程
以下过程由Internet Information Service(inetinfo.exe)(IIS)执行
1.客户端发出请求
2.验证请求
3.给请求授权
4.确定请求的缓存
5.获取缓存状态
6.在请求的处理程序执行前
7.http处理程序执行请求 (asp.net页面由aspnet_wp.exe执行)
8.在请求的处理程序执行后
9.释放请求状态
10.更新请求缓存
11.请求结束
三、Global.asax.cs中的事件
- public class MvcApplication : System.Web.HttpApplication
- {
- protected void Application_Start(object sender, EventArgs e)
- {
- //不是每次请求都调用
- //在Web应用程序的生命周期里就执行一次
- //在应用程序第一次启动和应用程序域创建事被调用
- //适合处理应用程序范围的初始化代码
- }
- void Application_End(object sender, EventArgs e)
- {
- //不是每次请求都调用
- //在应用程序关闭时运行的代码,在最后一个HttpApplication销毁之后执行
- //比如IIS重启,文件更新,进程回收导致应用程序转换到另一个应用程序域
- }
- void Session_Start(object sender, EventArgs e)
- {
- //不是每次请求都调用
- //会话开始时执行
- }
- void Session_End(object sender, EventArgs e)
- {
- //不是每次请求都调用
- //会话结束或过期时执行
- //不管在代码中显式的清空Session或者Session超时自动过期,此方法都将被调用
- }
- void Application_Init(object sender, EventArgs e)
- {
- //不是每次请求都调用
- //在每一个HttpApplication实例初始化的时候执行
- }
- void Application_Disposed(object sender, EventArgs e)
- {
- //不是每次请求都调用
- //在应用程序被关闭一段时间之后,在.net垃圾回收器准备回收它占用的内存的时候被调用。
- //在每一个HttpApplication实例被销毁之前执行
- }
- void Application_Error(object sender, EventArgs e)
- {
- //不是每次请求都调用
- //所有没有处理的错误都会导致这个方法的执行
- }
- /*********************************************************************/
- //每次请求都会按照顺序执行以下事件
- /*********************************************************************/
- void Application_BeginRequest(object sender, EventArgs e)
- {
- //每次请求时第一个出发的事件,这个方法第一个执行
- }
- void Application_AuthenticateRequest(object sender, EventArgs e)
- {
- //在执行验证前发生,这是创建验证逻辑的起点
- }
- void Application_AuthorizeRequest(object sender, EventArgs e)
- {
- //当安全模块已经验证了当前用户的授权时执行
- }
- void Application_ResolveRequestCache(object sender, EventArgs e)
- {
- //当ASP.NET完成授权事件以使缓存模块从缓存中为请求提供服务时发生,从而跳过处理程序(页面或者是WebService)的执行。
- //这样做可以改善网站的性能,这个事件还可以用来判断正文是不是从Cache中得到的。
- }
- //------------------------------------------------------------------------
- //在这个时候,请求将被转交给合适程序。例如:web窗体将被编译并完成实例化
- //------------------------------------------------------------------------
- void Application_AcquireRequestState(object sender, EventArgs e)
- {
- //读取了Session所需的特定信息并且在把这些信息填充到Session之前执行
- }
- void Application_PreRequestHandlerExecute(object sender, EventArgs e)
- {
- //在合适的处理程序执行请求前调用
- //这个时候,Session就可以用了
- }
- //-------------------------------------------------
- //在这个时候,页面代码将会被执行,页面呈现为HTML
- //-------------------------------------------------
- void Application_PostRequestHandlerExecute(object sender, EventArgs e)
- {
- //当处理程序完成对请求的处理后被调用。
- }
- void Application_ReleaseRequestState(object sender, EventArgs e)
- {
- //释放请求状态
- }
- void Application_UpdateRequestCache(object sender, EventArgs e)
- {
- //为了后续的请求,更新响应缓存时被调用
- }
- void Application_EndRequest(object sender, EventArgs e)
- {
- //EndRequest是在响应Request时最后一个触发的事件
- //但在对象被释放或者从新建立以前,适合在这个时候清理代码
- }
- void Application_PreSendRequestHeaders(object sender, EventArgs e)
- {
- //向客户端发送Http标头之前被调用
- }
- void Application_PreSendRequestContent(object sender, EventArgs e)
- {
- //向客户端发送Http正文之前被调用
- }
- }
asp.net mvc global.asax文件详解的更多相关文章
- Asp.net MVC Global.asax文件
global.asax文件概述 global.asax这个文件包含全局应用程序事件的事件处理程序.它响应应用程序级别和会话级别事件的代码. 运行时, Global.asax 将被编译成一个动态生成的 ...
- ASP.NET MVC教程二:ASP.NET MVC应用程序结构详解
在上一篇文章中,讲解了一些MVC的概念,并且创建了第一个ASP.NET MVC项目,这篇文章将讲解ASP.NET MVC程序中的代码解构,新创建的MVC应用程序解构如下图所示: 一.App_Data ...
- ASP.NET中Global.asax 文件是什么?
Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法.你可以使用这个文件实现应用程序安全性以及其它一些任务.下面让我们详细看 ...
- ASP.NET MVC Controller激活系统详解1
一.引言 好久没有写博客了,前一段时间学习了Controller激活的一篇很好的博文(链接),在此做个学习总结. 二.Controller 2.1 IController Controller类型直接 ...
- 关于ASP.NET 中 Global.asax 文件的后台事件处理程序
Global.asax.cs中的事件处理程序,像 Application_Start.Application_Error 等,这些名称和事件都是怎么来的呢? MSDN上的这篇文章描述了相关的内容: h ...
- Attribute自定义特性+Asp.net MVC中的filter详解
转载自:http://blog.csdn.net/wangyy130/article/details/44241957 一.filter简介 在了解自定义特性前,先引入一个概念filter,它是MVC ...
- ASP.NET MVC Controller激活系统详解2
一.引言 此篇博文紧接上篇博文进行阐述,本篇博文阐述的主题是Controller激活和url路由 二.总述 ASP.NET路由系统是HTTP请求抵达服务端的第一道屏障,它根据注册的路由规则对拦截的请求 ...
- ASP.NET MVC中的Global.asax文件
1.global.asax文件概述 global.asax这个文件包含全局应用程序事件的事件处理程序.它响应应用程序级别和会话级别事件的代码. 运行时, Global.asax 将被编译成一个动态生成 ...
- Global.asax文件—ASP.NET细枝末节(1)
说明 Global的解释是全局的.全球的. Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法.你可以使用这个文件实现应用 ...
随机推荐
- python 两个 list 获取交集,并集,差集的函数
1. 获取两个 list 的交集 a = [1, 2, 3, 4] b = [1, 2, 5] print(list(set(a).intersection(set(b)))) 2. 获取两个 lis ...
- 【转】SQL数据库日志文件收缩
USE [master] GO ALTER DATABASE MDM_OperationBase SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE ...
- CentOS 7系统上添加netcdf库
这里提供两种方法来安装 netcdf: 一是 yum 安装,yum 安装时采用的是系统自带的 gfortran 编译器,版本较旧: 二是采用源码来 Makefile 编译安装的方式,它可以下载最新版的 ...
- one list to muti list
List<Integer> intList = Lists.newArrayList(1, 2, 3, 4, 5, 6, 7, 8); List<List<Integer> ...
- 洛谷1196【NOI2002】题解
题目描述 公元五八○一年,地球居民迁至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰山压顶 ...
- tensorflow安装排坑笔记
由于项目需求,得用tensorflow完成,只能将mxnet的学习先放在一边,开始用tensorflow,废话不多说 首先安装anaconda+vs2015+cuda8.0+cudnn6.0 首先安装 ...
- Exploit-Exercises nebule 旅行日志(六)
接着上次的路程继续在ubuntu下对漏洞的探索练习,这次是level05了 先看下level05的问题描述: 从level05的描述上看,是/home/flag05目录的权限有漏洞,看来多半是又跟fl ...
- ATOM:亮瞎程序员双眼的编辑器插件横空出世
Atom 编辑器有一个叫 activate-power-mode,啥玩意?看下面的动图吧,非常有 Power ,有木有!!!自带眩晕特技,有木有!
- 今天捡起来python
时隔多少,我还是要学习,之前懒,结果有些就忘了,用笨方法学Python,码代码夹理解运行改正也就20多分钟,主要是加分习题,你一扩展就要思考的时间长了所以大概要留出1个小时来做他,好了该复习前面的了
- blender 3d模型软件介绍(开源,免费,易用,强大)
关于BLENDER Blender是一个开源的多平台轻量级全能三维动画制作软件 具有建模,雕刻,绑定,粒子,动力学,动画,交互,材质,渲染,音频处理,视频剪辑以及运动跟踪,后期合成等等的一系列动画短片 ...