特殊的HttpApplication事件处理
在global.asax中,针对HttpApplication的事件处理,可以通过定义特殊命名的方法来实现。首先,这些方法必须符合System.EventHandler,因为所有的HttpApplication管道事件都使用这个委托定义。第二,方法的作用域必须是public。第三,方法的命名格式必须如下:Application_注册的事件名称。按照这种命名方法定义在global.asax中的方法将被自动注册到对应的事件中。
例如,希望在global.asax中注册PostAuthenticateRequest事件处理,那么在global.asax中应该定义一个如下的方法:
void Application_PostAuthenticateRequest(object sender, EventArgs e)
{
Response.Write("验证通过事件!");
}
在Asp.net中,有些事件甚至只能通过global.asax来完成处理。
1、Start事件
Instances of the HttpApplication class are created in the ASP.NET infrastructure, not by the user directly. One instance of the HttpApplication class is used to process many requests in its lifetime. However, it can process only one request at a time
这个不是HttpApplication处理管道中的事件,当网站启动后,第一次请求到达网站之后,Asp.net网站将首先触发一次这个事件,而且在网站的整个生命周期中,也仅仅触发一次。由System.Web.HttpApplicationFactory对象触发,所以,也不能通过HttpApplication对象来获取相关的请求参数。在这个事件处罚的时候,第一次请求的上下文对象HttpContext也已经创建,所以,可以通过HttpContext.Current获取第一次的上下文请求对象,然后通过这个上下文对象来获取相关信息。
由于这个事件在网站第一次请求的时候触发,所以非常适合针对网站全局的数据进行初始化工作,在Asp.net MVC中,RouteTablle就是在这个事件中创建的。
2、End事件
当网站应用程序被关闭的时候,将触发这个事件。
3、Error事件
当网站应用程序出现错误,或者处理过程中出现未捕获的异常时,HttpApplication将抛出这个事件 。
4、Session的Start事件
当Asp.net每次创建了一个新的Session后,换句话说,创建了一个新的SessionID之后,就会触发Session的Start事件。需要注意到,在Asp.net中,支持会话的HttpModule在配置文件中注册的name就是Session。
5、Session的End事件
当一个Session过期之后,或者通过调用Abandon方法被丢弃之后,将会触发Session的End事件。这个事件的事件源实际上是SessionStateModule,而不是HttpApplication。需要注意的是,关闭浏览器不会导致Session的End事件。而且,如果Session的管理模式是StateServer或者SQLServer的话,将不会触发这个事件。
6、HttpModule的事件注册
从Session的处理可以看出,对于注册到网站中的HttpModule,如果这些Module也会抛出事件,而我们希望能够处理这些HttpModule事件的时候,可以在global.asax通过定义如下名称形式的方法来处理HttpModule的事件。
参考链接:http://www.cnblogs.com/kissdodog/p/3527922.html
特殊的HttpApplication事件处理的更多相关文章
- HttpApplication处理对象与HttpModule处理模块 (第三篇)
一.HttpApplication对象简述 在HttpRuntime创建了HttpContext对象之后,HttpRuntime将随后创建一个用于处理请求的对象,这个对象的类型为HttpApplica ...
- HttpApplication处理对象与HttpModule处理模块
HttpApplication处理对象与HttpModule处理模块 (第三篇) 一.HttpApplication对象简述 在HttpRuntime创建了HttpContext对象之后,HttpRu ...
- Asp.Net MVC<二> : IIS/asp.net管道
MVC是Asp.net的设计思想,而IIS/asp.net是它的技术平台.理解ASP.NET的前提是对ASP.NET管道式设计的深刻认识.而ASP.NET Web应用大都是寄宿于IIS上的. IIS ...
- Asp.net 处理程序(第五篇)
HttpApplication有19个标准事件,当到达第8个事件PostMapRequestHandler触发的时候,标志着已经获取到了处理请求的处理程序对象,在第11个事件PreRequestHan ...
- 从底层角度看ASP.NET-A low-level Look at the ASP.NET...
从更低的角度 这篇文章在一个底层的角度来关注一个web请求怎样到达asp.net框架,从web服务器,通过ISAPI.看看这些后面发生了什么,让我们停止对asp.net的黑箱猜想.ASP.NET是一个 ...
- 【ASP.NET】IHttpHandler和IHttpModule
上篇文章我们主要讲了HttpApplicatiion管道事件,那么我么如何处理这些管道事件呢,以及请求在ASP.NET是如何执行的呢,我们来了解一下IHttpHandler和IHttpModule 引 ...
- IIS/asp.net管道
http://referencesource.microsoft.com/ 理解ASP.NET的前提是对ASP.NET管道式设计的深刻认识.而ASP.NET Web应用大都是寄宿于IIS上的. IIS ...
- HttpApplication的处理管道19个事件。
HttpApplication对象是由Asp.net帮助我们创建的,它是asp.net中处理请求的重要对象.为了便于扩展,HttpApplication采用处理管道的方式进行处理,将处理的步骤分为多个 ...
- .NET本质论(4)应用程序对象HttpApplication
当HttpContext对象创建之后,HttpRuntime将随后创建一个用于处理请求的对象,这个对象的类型为HttpApplication. 在ASP.NET内部,HttpRuntime管理一个定 ...
随机推荐
- Weblogic配置SSl使用Https
一 .可以开启自带的SSL连接 启动weblogic,进入左侧菜单,点击左侧的安全领域-->点击myrealm-->点击角色和策略-->点击服务器AdminServer 点击保存,w ...
- PCB 锣板和半孔工艺的差别
PCB 锣板和半孔工艺的差别 PCB 在做模块时会用到半孔工艺,但是由于半孔是特殊工艺. 需要加费用,打板时费还不低. 下面这个图是锣板和半孔工艺的差别. https://www.amobbs.com ...
- CF 1088(A , B , C , D)——思路
http://codeforces.com/contest/1088 A:Ehab and another construction problem 输出 2 和 n(偶数的话)或者 2 和 n-1( ...
- Java面试题:栈和队列的实现
面试的时候,栈和队列经常会成对出现来考察.本文包含栈和队列的如下考试内容: (1)栈的创建 (2)队列的创建 (3)两个栈实现一个队列 (4)两个队列实现一个栈 (5)设计含最小函数min()的栈,要 ...
- Linux: How to delete a disk or LUN reference from /dev
In AIX, there is rmdev command to remove a disk/LUN from /dev directory i.e to make the disk/LUN una ...
- RecyclerView(滚动控件)的用法
1.首先在build.gradle中添加依赖库 compile 'com.android.support:recyclerview-v7:24.2.1' 2.修改activity_main.xml & ...
- appium 中swipe()方法向左滑动时
应该在UI Automator Viewer中读取到的例如ImageView [180,600][900,1320],如果要左滑,代码中应该是写为driver.swipe(900,1320,180,6 ...
- MongoDB 4.X搭建
一.MongoDB4.X搭建 1.下载mongdb安装包,在官网上找到对应的版本,我的是centos7 找到上面的连接,通过命令行: 2.将下载的mongodb-linux-x86_64-4.0.0. ...
- 关于 Mybatis的原生连接池 和 DBCP 连接池
一 遇到的问题: 项目用的play框架,数据库DB2, 持久化框架是Mybatis, 连接池用的是Mybatis原生的,遇到的问题是:有时候抛出如下异常: play.api.UnexpectedEx ...
- U-boot分析与移植(1)----bootloader分析
一.Boot Loader 概念 就是在操作系统内核运行之前运行的一段小程序.通过这段小程序,我们可以初始化硬件设备.建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作 ...