一、文件概述

  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中的事件

  1. public class MvcApplication : System.Web.HttpApplication
  2. {
  3. protected void Application_Start(object sender, EventArgs e)
  4. {
  5. //不是每次请求都调用
  6. //在Web应用程序的生命周期里就执行一次
  7. //在应用程序第一次启动和应用程序域创建事被调用
  8. //适合处理应用程序范围的初始化代码
  9. }
  10.  
  11. void Application_End(object sender, EventArgs e)
  12. {
  13. //不是每次请求都调用
  14. //在应用程序关闭时运行的代码,在最后一个HttpApplication销毁之后执行
  15. //比如IIS重启,文件更新,进程回收导致应用程序转换到另一个应用程序域
  16. }
  17.  
  18. void Session_Start(object sender, EventArgs e)
  19. {
  20. //不是每次请求都调用
  21. //会话开始时执行
  22. }
  23.  
  24. void Session_End(object sender, EventArgs e)
  25. {
  26. //不是每次请求都调用
  27. //会话结束或过期时执行
  28. //不管在代码中显式的清空Session或者Session超时自动过期,此方法都将被调用
  29. }
  30.  
  31. void Application_Init(object sender, EventArgs e)
  32. {
  33. //不是每次请求都调用
  34. //在每一个HttpApplication实例初始化的时候执行
  35. }
  36.  
  37. void Application_Disposed(object sender, EventArgs e)
  38. {
  39. //不是每次请求都调用
  40. //在应用程序被关闭一段时间之后,在.net垃圾回收器准备回收它占用的内存的时候被调用。
  41. //在每一个HttpApplication实例被销毁之前执行
  42. }
  43.  
  44. void Application_Error(object sender, EventArgs e)
  45. {
  46. //不是每次请求都调用
  47. //所有没有处理的错误都会导致这个方法的执行
  48. }
  49.  
  50. /*********************************************************************/
  51. //每次请求都会按照顺序执行以下事件
  52. /*********************************************************************/
  53.  
  54. void Application_BeginRequest(object sender, EventArgs e)
  55. {
  56. //每次请求时第一个出发的事件,这个方法第一个执行
  57. }
  58.  
  59. void Application_AuthenticateRequest(object sender, EventArgs e)
  60. {
  61. //在执行验证前发生,这是创建验证逻辑的起点
  62. }
  63.  
  64. void Application_AuthorizeRequest(object sender, EventArgs e)
  65. {
  66. //当安全模块已经验证了当前用户的授权时执行
  67. }
  68.  
  69. void Application_ResolveRequestCache(object sender, EventArgs e)
  70. {
  71. //当ASP.NET完成授权事件以使缓存模块从缓存中为请求提供服务时发生,从而跳过处理程序(页面或者是WebService)的执行。
  72. //这样做可以改善网站的性能,这个事件还可以用来判断正文是不是从Cache中得到的。
  73. }
  74.  
  75. //------------------------------------------------------------------------
  76. //在这个时候,请求将被转交给合适程序。例如:web窗体将被编译并完成实例化
  77. //------------------------------------------------------------------------
  78.  
  79. void Application_AcquireRequestState(object sender, EventArgs e)
  80. {
  81. //读取了Session所需的特定信息并且在把这些信息填充到Session之前执行
  82. }
  83.  
  84. void Application_PreRequestHandlerExecute(object sender, EventArgs e)
  85. {
  86. //在合适的处理程序执行请求前调用
  87. //这个时候,Session就可以用了
  88. }
  89.  
  90. //-------------------------------------------------
  91. //在这个时候,页面代码将会被执行,页面呈现为HTML
  92. //-------------------------------------------------
  93.  
  94. void Application_PostRequestHandlerExecute(object sender, EventArgs e)
  95. {
  96. //当处理程序完成对请求的处理后被调用。
  97. }
  98.  
  99. void Application_ReleaseRequestState(object sender, EventArgs e)
  100. {
  101. //释放请求状态
  102. }
  103.  
  104. void Application_UpdateRequestCache(object sender, EventArgs e)
  105. {
  106. //为了后续的请求,更新响应缓存时被调用
  107. }
  108.  
  109. void Application_EndRequest(object sender, EventArgs e)
  110. {
  111. //EndRequest是在响应Request时最后一个触发的事件
  112. //但在对象被释放或者从新建立以前,适合在这个时候清理代码
  113. }
  114.  
  115. void Application_PreSendRequestHeaders(object sender, EventArgs e)
  116. {
  117. //向客户端发送Http标头之前被调用
  118. }
  119.  
  120. void Application_PreSendRequestContent(object sender, EventArgs e)
  121. {
  122. //向客户端发送Http正文之前被调用
  123. }
  124. }

  

asp.net mvc global.asax文件详解的更多相关文章

  1. Asp.net MVC Global.asax文件

    global.asax文件概述 global.asax这个文件包含全局应用程序事件的事件处理程序.它响应应用程序级别和会话级别事件的代码. 运行时, Global.asax 将被编译成一个动态生成的 ...

  2. ASP.NET MVC教程二:ASP.NET MVC应用程序结构详解

    在上一篇文章中,讲解了一些MVC的概念,并且创建了第一个ASP.NET MVC项目,这篇文章将讲解ASP.NET MVC程序中的代码解构,新创建的MVC应用程序解构如下图所示: 一.App_Data ...

  3. ASP.NET中Global.asax 文件是什么?

    Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法.你可以使用这个文件实现应用程序安全性以及其它一些任务.下面让我们详细看 ...

  4. ASP.NET MVC Controller激活系统详解1

    一.引言 好久没有写博客了,前一段时间学习了Controller激活的一篇很好的博文(链接),在此做个学习总结. 二.Controller 2.1 IController Controller类型直接 ...

  5. 关于ASP.NET 中 Global.asax 文件的后台事件处理程序

    Global.asax.cs中的事件处理程序,像 Application_Start.Application_Error 等,这些名称和事件都是怎么来的呢? MSDN上的这篇文章描述了相关的内容: h ...

  6. Attribute自定义特性+Asp.net MVC中的filter详解

    转载自:http://blog.csdn.net/wangyy130/article/details/44241957 一.filter简介 在了解自定义特性前,先引入一个概念filter,它是MVC ...

  7. ASP.NET MVC Controller激活系统详解2

    一.引言 此篇博文紧接上篇博文进行阐述,本篇博文阐述的主题是Controller激活和url路由 二.总述 ASP.NET路由系统是HTTP请求抵达服务端的第一道屏障,它根据注册的路由规则对拦截的请求 ...

  8. ASP.NET MVC中的Global.asax文件

    1.global.asax文件概述 global.asax这个文件包含全局应用程序事件的事件处理程序.它响应应用程序级别和会话级别事件的代码. 运行时, Global.asax 将被编译成一个动态生成 ...

  9. Global.asax文件—ASP.NET细枝末节(1)

    说明 Global的解释是全局的.全球的. Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法.你可以使用这个文件实现应用 ...

随机推荐

  1. python 两个 list 获取交集,并集,差集的函数

    1. 获取两个 list 的交集 a = [1, 2, 3, 4] b = [1, 2, 5] print(list(set(a).intersection(set(b)))) 2. 获取两个 lis ...

  2. 【转】SQL数据库日志文件收缩

    USE [master] GO ALTER DATABASE MDM_OperationBase SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE ...

  3. CentOS 7系统上添加netcdf库

    这里提供两种方法来安装 netcdf: 一是 yum 安装,yum 安装时采用的是系统自带的 gfortran 编译器,版本较旧: 二是采用源码来 Makefile 编译安装的方式,它可以下载最新版的 ...

  4. one list to muti list

    List<Integer> intList = Lists.newArrayList(1, 2, 3, 4, 5, 6, 7, 8); List<List<Integer> ...

  5. 洛谷1196【NOI2002】题解

    题目描述 公元五八○一年,地球居民迁至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰山压顶 ...

  6. tensorflow安装排坑笔记

    由于项目需求,得用tensorflow完成,只能将mxnet的学习先放在一边,开始用tensorflow,废话不多说 首先安装anaconda+vs2015+cuda8.0+cudnn6.0 首先安装 ...

  7. Exploit-Exercises nebule 旅行日志(六)

    接着上次的路程继续在ubuntu下对漏洞的探索练习,这次是level05了 先看下level05的问题描述: 从level05的描述上看,是/home/flag05目录的权限有漏洞,看来多半是又跟fl ...

  8. ATOM:亮瞎程序员双眼的编辑器插件横空出世

    Atom 编辑器有一个叫 activate-power-mode,啥玩意?看下面的动图吧,非常有 Power ,有木有!!!自带眩晕特技,有木有!

  9. 今天捡起来python

    时隔多少,我还是要学习,之前懒,结果有些就忘了,用笨方法学Python,码代码夹理解运行改正也就20多分钟,主要是加分习题,你一扩展就要思考的时间长了所以大概要留出1个小时来做他,好了该复习前面的了

  10. blender 3d模型软件介绍(开源,免费,易用,强大)

    关于BLENDER Blender是一个开源的多平台轻量级全能三维动画制作软件 具有建模,雕刻,绑定,粒子,动力学,动画,交互,材质,渲染,音频处理,视频剪辑以及运动跟踪,后期合成等等的一系列动画短片 ...