c# .net Global.asax文件的作用
1 Global.asax文件的作用
先看看MSDN的解释,Global.asax
文件(也称为 ASP.NET 应用程序文件)是一个可选的文件,该文件包含响应 ASP.NET
或HTTP模块所引发的应用程序级别和会话级别事件的代码。Global.asax 文件驻留在 ASP.NET 应用程序的根目录中。运行时,分析
Global.asax 并将其编译到一个动态生成的
.NET Framework 类,该类是从HttpApplication基类派生的。配置 ASP.NET,以便自动拒绝对
Global.asax 文件的任何直接的 URL 请求;外部用户不能下载或查看其中的代码。Global.asax
文件是可选的。只在希望处理应用程序事件或会话事件时,才应创建它.
2 Global.asax文件的创建
点击Web站点>>添加新建项>>全局应用程序类,即可添加Global.asax文件。
3 Global.asax文件的执行
例如,IIS现在接到一个访问ASP.NET应用程序的请求,这时候IIS会将这个请求映射给aspnet_isapi.dll,当aspnet_isapi.dll接到这个请求后,会新建一个aspnet_wp.exe的进程(windows
server
2003下是w3wp.exe进程),这个进程会将请求传递给一个被指定的AppDomain,当这个AppDomain被创建时,就会去加载一些配置文件中的信息(加载顺序是从machine.config文件到web.config文件中的一些相关配置),而当这些信息都被加载以后,AppDomain会去获得一个HttpApplication的实例,这个时候global类就会被编译加载了,接下来AppDomain会做一些相关的处理创建Page类的实例,最后这个页面呈现到客户端浏览器上。但这里有一点问题需要注意,当配置文件被加载的时候,并不是表示AppDomain会加载配置文件中所有的信息,而仅是加载一些需要的信息。而有些配置信息是在需要时,才会被AppDomain加载。例如我们在web.config文件中配置了很多HttpModule,但是仅当每一个HttpModule被访问到时,AppDomain才会去加载并处理这些信息。所以说web.config文件和global没有先后执行的顺序,只是视具体的信息什么时候会被加载和处理。
4 Global.asax.cs中的方法的含义
Application_Init:在每一个HttpApplication实例初始化的时候执行
Application_Disposed:在每一个HttpApplication实例被销毁之前执行
Application_Error:所有没有处理的错误都会导致这个方法的执行
Application_Start:在程序初始化的时候执行。在Web应用程序的生命周期里就执行一次,这里只能放一些公用的信息,比如HttpApplicationState。
Application_End:应用程序结束时,在最后一个HttpApplication销毁之后执行。对应Application_Start,在整个生命周期里面也是只执行一次。
Session_Start:会话开始时执行。
Session_End:会话结束或过期时执行。
Application_BeginRequest:BeginRequest是在收到Request时第一个触发的事件,这个方法第一个执行。
Application_AuthenticateRequest:当安全模块已经建立了当前用户的标识后执行。
Application_AuthorizeRequest:当安全模块已经验证了当前用户的授权时执行。
Application_ResolveRequestCache:当ASP.NET完成授权事件以使缓存模块从缓存中为请求提供服务时发生,从而跳过处理程序(页面或者是WebService)的执行。这样做可以改善网站的性能,这个事件还可以用来判断正文是不是从Cache中得到的。
Application_AcquireRequestState:当ASP.NET获取当前请求所关联的当前状态(如Session)时执行。
Application_PreRequestHandlerExecute:当ASP.Net即将把请求发送到处理程序对象(页面或者是WebService)之前执行。这个时候,Session就可以用了。
Application_PostRequestHandlerExecute:当处理程序对象工作完成后执行。
Application_ReleaseRequestState:在ASP.NET执行完所有请求处理程序后执行。ReleaseRequestState事件将使当前状态数据被保存。
Application_UpdateRequestCache:在ASP.NET执行完处理程序后为了后续的请求而更新响应缓存时执行。
Application_EndRequest:同上,EndRequest是在响应Request时最后一个触发的事件,这个方法自然就是最后一个执行的了。
Application_PreSendRequestHeaders:向客户端发送Http标头之前执行。
Application_PreSendRequestContent:向客户端发送Http正文之前执行。
Request相应的事件执行顺序:
1.BeginRequest
2.AuthenticateRequest
3.AuthorizeRequest
4.ResolveRequestCache
5.AcquireRequestState
6.PreRequestHandlerExecute
7.PostRequestHandlerExecute
8.ReleaseRequestState
9.UpdateRequestCache
10.EndRequest
c# .net Global.asax文件的作用的更多相关文章
- Global.asax 文件说明
引用 来自 http://www.cnblogs.com/jianshao810/archive/2011/02/03/1948912.htm 在网上找了N多相关的东西总说的不够细,现在终于找到了. ...
- Global.asax文件说明
Global.asax是我们的底层文件,第一次的IIS请求都会先去执行它里面的文件,所以学会它里面的函数是非常有必要的.而且我们总是忽略这里的知识点,总觉得这是不必须的,其实我们错了,这里才是程序的根 ...
- Global.asax文件的说明
每个应用程序可以包含一个特殊的目录(/bin)和两个特殊的文件(Web.config和Global.asax) Global.asax文件的使用: 作用:处理应用程序范围内的事件,声明应用程序范围的对 ...
- .net Global.asax文件使用
一.Application_start: 第一个访问网站的用户会触发该方法. 通常会在该方法里定义一些系统变量,如聊天室的在线总人数统计,历史访问人数统计的初始化等等均可在这里定义. Applicat ...
- Global.asax 文件是什么
Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法.你可以使用这个文件实现应用程序安全性以及其它一些任务.下面让我们详细看 ...
- ASP.NET MVC中的Global.asax文件
1.global.asax文件概述 global.asax这个文件包含全局应用程序事件的事件处理程序.它响应应用程序级别和会话级别事件的代码. 运行时, Global.asax 将被编译成一个动态生成 ...
- 转Global.asax文件
Global.asax 文件是什么 Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法.你可以使用这个文件实现应用程序 ...
- ASP.NET中Global.asax 文件是什么?
Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法.你可以使用这个文件实现应用程序安全性以及其它一些任务.下面让我们详细看 ...
- Asp.net MVC Global.asax文件
global.asax文件概述 global.asax这个文件包含全局应用程序事件的事件处理程序.它响应应用程序级别和会话级别事件的代码. 运行时, Global.asax 将被编译成一个动态生成的 ...
随机推荐
- Bits
先%SY... 课件链接 求1的个数 以32位整数为例子,最暴力的方法就是一位一位的数,但是这样太不优美... 以下是优美的方法... 这个问题其实就是二进制求和... 我们考虑分治的思想...每一次 ...
- kernel thread vs user thread
The most important difference is they use different memory, the kernel mode thread can access any ke ...
- jQuery插件(右下角弹出窗口)
原文发布时间为:2010-03-07 -- 来源于本人的百度文章 [由搬家工具导入] jQuery插件(右下角弹出窗口) 收藏 源码下载 http://download.csdn.net/source ...
- android基本控件学习-----TextView
一.TextView的讲解 <实例一> <?xml version="1.0" encoding="utf-8"?> <Linea ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---27
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 对/proc和/sys的一些理解
一切皆文件,设备(文件)可以通过读写来操作:/proc procfs:/sys sysfs: 个人的理解(不知对不对,感觉有些片面)/proc是内存中有关系统进程的实时信息:/sys是有关系统内核以及 ...
- 五、Ubuntu 进入vi相关问题
1.进入vi环境:vim 路径 2.编辑vi:按i键即可 3.保存vi:按esc键,输入冒号,输入wq 回车即可 4.遇到readonly相关问题,可先解除readonly:按esc键,输入:set ...
- Codeforces Gym100971 G.Repair-思维题(切矩形板子) (IX Samara Regional Intercollegiate Programming Contest Russia, Samara, March 13)
这个题就是一块大板子,问你能不能切成两块要求的长宽的两块板子,一开始是按切板子想的,感觉有点麻烦. 直接反过来想,把两块要求的板子拼起来,填成一个大板子,看填出来的这个板子和题目给的板子比较,小于等于 ...
- Codeforces Round #450 (Div. 2) B. Position in Fraction【数论/循环节/给定分子m 分母n和一个数c,找出c在m/n的循环节第几个位置出现,没出现过输出-1】
B. Position in Fraction time limit per test 1 second memory limit per test 256 megabytes input stand ...
- [TJOI2014] 上升子序列
刚刚做的时候一看:这不是个傻逼题吗hhhhh....然后发现写完了过不了样例,仔细一看题:同构的算一种. 这可咋办啊? 其实很简单,设f[i] 为 以a[i] 结尾的上升子序列个数,我们考虑当前如果算 ...