一、文件概述

  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文件详解的更多相关文章

  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. Java打包小结

    1eclipse打包:点击项目export,然后点击java->JAR file->next->选择目录->finish->报错也不管 2idea直接运行jar包就好了, ...

  2. Paper Reading: Stereo DSO

    开篇第一篇就写一个paper reading吧,用markdown+vim写东西切换中英文挺麻烦的,有些就偷懒都用英文写了. Stereo DSO: Large-Scale Direct Sparse ...

  3. unity中多个门的开关动画保持独立性

    List<Animation> storeAnimation; public void Awake() { storeAnimation = new List<Animation&g ...

  4. git操作github仓库基本操作

    一.登录 首次登录 $ git config --global user.name "Your Name" $ git config --global user.email ‘yo ...

  5. flask-bootstrap学习笔记

    flask-bootstrap 是flask一个方便扩展使用bootstrap前台的扩展. 使用方法: 安装: pip instal flask-bootstrap4 加载: from flask_b ...

  6. Object.create()和new object()和{}的区别

    Object.create()介绍 Object.create(null) 创建的对象是一个空对象,在该对象上没有继承 Object.prototype 原型链上的属性或者方法,例如:toString ...

  7. maven生命周期和插件详解

    生命周期 什么是生命周期? maven的生命周期就是对所有的构建过程进行抽象和统一.maven从大量项目和构建工具中总结了一套高度完善的.易扩展的生命周期.这个生命周期包含项目的清理.初始化.编译.测 ...

  8. python中的unique()

    a = np.unique(A) 对于一维数组或者列表,unique函数去除其中重复的元素,并按元素由大到小返回一个新的无元素重复的元组或者列表 import numpy as np A = [1, ...

  9. 关注Yumiot公众号,了解最新的物联网资讯

    Yumiot,专注于物联网行业,每天不定期推送最新的物联网行业新闻.详情请用微信搜索关注  yumiot  .

  10. python中的内置函数getattr()介绍及示例

    在python的官方文档中:getattr()的解释如下: ? 1 2 3 getattr(object, name[, default])   Return the value of the nam ...