开发人员应该对IIS理论层的知识了解的多一些~第四讲 HttpModel中的几大事件

返回目录

本文主要介绍HttpModule,它在一个网页请求过程中是一个怎样的过程是我们要知道的,在网页加载过程中HttpModule在何时被执行也是我们要知道的,以及,HttpModule在网页请求过程中,所被触发的各个事件也是我们要知道的,下面就带着问题来看文章吧

ASP.NET对请求处理的过程

当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后,将这个请求转交给 ASPNET_ISAPI.dll(否则交给对应的应用程序去解释它),ASPNET_ISAPI.dll会通过http管道(Http PipeLine)将请求发送给ASPNET_WP.exe进程,在ASPNET_WP.exe进程中通过HttpRuntime来处理这个请求,处理完 毕将结果返回客户端。

下面看一个各个术语的含义

inetinfo.exe进程:是www服务的进程,IIS服务和ASPNET_ISAPI.DLL都寄存在此进程中。
ASPNET_ISAPI.DLL:是处理.aspx文件的win32组件。其实IIS服务器是只能识别.html文件的,当IIS服务器发现被请求的文件是.aspx文件时,IIS服务器将其交给aspnet_isapi.dll来处理。
aspnet_wp.exe进程:ASP.NET框架进程,提供.net运行的托管环境,.net的CLR(公共语言运行时)就是寄存在此进程中。

aspnet_wp处理一个Http Request的流程

HttpRequest-->

inetinfo.exe-->

ASPNET_ISAPI.dll-->

ASPNET_WP.exe-->

HttpRuntime-->

HttpApplication
Factory-->

HttpApplication-->

HttpModule-->

HttpHandler
Factory-->

HttpHandler-->

HttpHandler.ProcessRequest()

通过上面的流程中,我们可以看到HttpModel在何时被执行的。
ASP.NET请求处理过程是基于管道模型的,这个管道模型是由多个HttpModule和HttpHandler组成,ASP.NET
把http请求依次传递给管道中各个HttpModule,最终被HttpHandler处理,处理完成后,再次经过管道中的HTTP模块,把结果返回给
客户端。我们可以在每个HttpModule中都可以干预请求的处理过程。

注意:在http请求的处理过程中,只能调用一个HttpHandler,但可以调用多个HttpModule

HttpModule会注册以下事件


        
AcquireRequestState 当ASP.NET运行时准备好接收当前HTTP请求的对话状态的时候引发这个事件。
        AuthenticateRequest 当ASP.NET 运行时准备验证用户身份的时候引发这个事件。
        AuthorizeRequest 当ASP.NET运行时准备授权用户访问资源的时候引发这个事件。
        BeginRequest 当ASP.NET运行时接收到新的HTTP请求的时候引发这个事件。
        Disposed 当ASP.NET完成HTTP请求的处理过程时引发这个事件。
        EndRequest 把响应内容发送到客户端之前引发这个事件。
        Error 在处理HTTP请求的过程中出现未处理异常的时候引发这个事件。
        PostRequestHandlerExecute 在HTTP处理程序结束执行的时候引发这个事件。
        PreRequestHandlerExecute 在ASP.NET开始执行HTTP请求的处理程序之前引发这个事件。在这个事件之后,ASP.NET 把该请求转发给适当的HTTP处理程序。
        PreSendRequestContent 在ASP.NET把响应内容发送到客户端之前引发这个事件。这个事件允许我们在内容到达客户端之前改变响应内容。我们可以使用这个事件给页面输出添加用于所有页面的内容。例如通用菜单、头信息或脚信息。
        PreSendRequestHeaders 在ASP.NET把HTTP响应头信息发送给客户端之前引发这个事件。在头信息到达客户端之前,这个事件允许我们改变它的内容。我们可以使用这个事件在头信息中添加cookie和自定义数据。
        ReleaseRequestState 当ASP.NET结束所搜有的请求处理程序执行的时候引发这个事件。
        ResolveRequestCache 我们引发这个事件来决定是否可以使用从输出缓冲返回的内容来结束请求。这依赖于Web应用程序的输出缓冲时怎样设置的。
        UpdateRequestCache 当ASP.NET完成了当前的HTTP请求的处理,并且输出内容已经准备好添加给输出缓冲的时候,引发这个事件。这依赖于Web应用程序的输出缓冲是如何设置的。

好了,有了上面的基础知识之后,相信各位对HttpModule有了一个全新的认识了吧。

返回目录

时间: 2024-07-31 04:13:22

开发人员应该对IIS理论层的知识了解的多一些~第四讲 HttpModel中的几大事件的相关文章

开发人员不可不看的 OBD通讯协议知识

OBD-II Network Standards» J1850 VPW– Adopted by GM; also known as Class 2.– Adopted by Chrysler (known as J1850).– Some references to VPW mode heard about in regards to Toyota (and Honda ?).– 10.4 kbps, single wire.» J1850 PWM– Adopted by Ford; also

关于pytho面向过程开发人员三步转oo的补充,再加一步,四步走战略

1.之前写的这个很久了 里面提到的是三步走: 模块和类的转换规则是: 1.模块级降为类 2.全局变量改成实例属性,全局的不会被改变的变量类似于那种const的,可以写成类属性(减少点内存存储可以). 3.然后把函数改成方法.方法是类里面的,函数是模块里面的. 因为里面举得一个例子是一个人,但人的属性写的是模块级全局变量,如果是这种写法,三步走就可以oo了. 2.但现在的情况是很多人不喜欢写全局变量(不写全局是为了尽可能模拟多实例,不可能用全局变量,因为全局变量只有一份:而且运行结果是从入口函数传

IE8“开发人员工具”使用详解上(各级菜单详解)

来源: http://www.cnblogs.com/JustinYoung/archive/2009/03/24/kaifarenyuangongju.html IE8“开发人员工具”使用详解上(各级菜单详解) IE8正式版已经发布了.本篇文章不会非常扯蛋地去进行什么评测,然后给出什么“Chrome运行JavaScript能力是IE8的15倍”.什么“IE8页面渲染速度是Safari的2.456倍”.什么“IE8的抗强暴能力比FireFox高出1.235倍” 这样的操蛋的结论.我管谁比谁强多少

BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第1章节--SharePoint 2013 介绍 处理开发人员需求

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第1章节--SharePoint 2013 介绍 处理开发人员需求 SharePoint本质上是一个平台.你必须理解哪些平台功能,才知道SharePoint如何能帮助你(开发人员).当你探索并了解组成此平台的功能范围时,你会看到一些有趣而引人的机会出现在开发人员面前. 我们看一个实际例子.如你所知,一个业务生产平台意味着终端用户可以是他们更加协同,并在日常工作生活中更多产--SharePoint当然能够做到.它可以立刻

重读《从菜鸟到测试架构师》-- 开发人员也需要做测试

小艾经过了安装测试的历练,明显对软件测试又有了更深刻的了解.而在进行测试过程中,小艾遇到一个导致他手里大部分case失败的bug,而这个bug的幼稚简直令小艾忍不住想骂开发人员. 而就在小艾质疑为什么开发人员没有发现这么简单的bug的时候,小艾作为支援人员被调进了开发组协助开发工作,忙碌的开发组也立刻给小艾下达了第一份任务,完成某user story的代码开发及单元测试. 可是小艾的编码能力有限,紧赶慢赶才在限定的时间里完成了开发任务,没时间做单元测试了,只是简单测了测,就提交了代码,于是出现了

Web开发人员需知的Web缓存知识

什么是Web缓存,为什么要使用它? Web缓存游走于服务器和客户端之间.这个服务器可能是源服务器(资源所驻留的服务器Add),数量可能是1个或多个:这个客户端也可能是1个或多个.Web缓存就在服务器-客户端之间搞监控,监控请求,并且把请求输出的内容(例如html页面. 图片和文件)(统称为副本)另存一份:然后,如果下一个请求是相同的URL,则直接请求保存的副本,而不是再次麻烦源服务器. 使用缓存的2个主要原因: 降低延迟:缓存离客户端更近,因此,从缓存请求内容比从源服务器所用时间更少,呈现速度更

Web 开发人员需知的 Web 缓存知识

最近的译文距今已有4年之久,原文有一定的更新.今天踩着前辈们的肩膀,再次把这篇文章翻译整理下.一来让自己对web缓存的理解更深刻些,二来让大家注意力稍稍转移下,不要整天HTML5, 面试题啊叨啊叨的~~ 什么是Web缓存,为什么要使用它? http://blog.csdn.net/yangxing_star/article/details/9103429 Web缓存游走于服务器和客户端之间.这个服务器可能是源服务器(资源所驻留的服务器Add),数量可能是1个或多个:这个客户端也可能是1个或多个.

开发人员协会成立啦

从4月份開始准备我们系开发人员协会的成立工作(http://blog.csdn.net/wowkk/article/details/23613075).做了非常多方面的沟通工作.今天(不~应该是昨天了)最终在成立大会宣布成立了. 以下是我做的PPT,将我们协会的一些理念讲给參与成立大会的领导.老师.学生听. 如今略晚了,所以就简单回想下~~ 入学新生.调查.小白比例.可能一部分还没接触过电脑. 这是我们义务维修的培训现场.尽管简单,但还是非常多人不了解而且感兴趣的. 以讲师为核心,培训基础会员.

《转》适用于开发人员的10个最佳ASP.NET的CMS系统

1) mojoportal mojoPortal 是一个开源的.用 C# 编写的站点框架和内容管理系统,可以运行在 Windows 中的 ASP.NET 和 Linux/Mac OS X 中的 Mono 下. 当前的特性 遵循 XHTML 的内容管理 用 WebParts 个性化自己的页面 博客 论坛 事件日历(Event Calendar ) 图像画廊(Image Gallery ) 文件管理 基于数据库.Active Directory, OpenLDAP, Open ID, 或 Windo