管线事件

asp.net生命周期的管道事件-ihttpmodule,在客户端发送请求的时候,是要通过asp.net的管道事件

原理

1.HTTP.SYS(是操作系统的核心组件,能够让任何应用程序通过它提供的接口,以http协议进行信息通讯)接收到Http请求[是对该web应用的第一次访问]

2.AppDomianFactory为该web应用创建一个应用程序域(AppDomain)

3.IsapiRuntime运行时被加载,首先它会创建一个IsapiWorkerRequest对象(用于封装Http请求)并传递给HttpRuntime,至此正式进入管道

4.HttpRuntime会创建表示Http请求的上下文对象:HttpContext

5.HttpRuntime会利用HttpApplicationFactory创建新的或者获取现有的HttpApplication对象(ASP.NET维护着一个HttpApplication对象池,HttpApplicationFactory从池中选取可用的HttpApplication用户处理HTTP请求,处理完毕后将其释放到对象池中。HttpApplicationFactory负责处理当前的HTTP请求。)

6.在HttpApplication初始化过程中,会根据配置文件加载并初始化相应的HttpModule对象(对于HttpApplication来说,在它处理HTTP请求的不同的阶段会触发不同的事件(Event),而HttpModule的意义在于通过注册HttpApplication的相应的事件,将所需的操作注入整个HTTP请求的处理流程。ASP.NET的很多功能,比如身份验证、授权、缓存等,都是通过相应的HttpModule实现的。)

7.最终完成对HTTP请求的处理实现在另一个重要的对象中:HttpHandler,对于不同的资源类型,具有不同的HttpHandler。

管线事件简易说明

在asp.net的页面生命周期里面,一共有24个管线事件,完整的管线事件可参考MSDN文档:

在处理该请求时将由 HttpApplication 类执行以下事件。 希望扩展 HttpApplication 类的开发人员尤其需要注意这些事件。
1. 对请求进行验证,将检查浏览器发送的信息,并确定其是否包含潜在恶意标记。 有关更多信息,请参见 ValidateRequest 和脚本侵入概述。
2. 如果已在 Web.config 文件的 UrlMappingsSection 节中配置了任何 URL,则执行 URL 映射。
3. 引发 BeginRequest 事件。
4. 引发 AuthenticateRequest 事件。
5. 引发 PostAuthenticateRequest 事件。
6. 引发 AuthorizeRequest 事件。
7. 引发 PostAuthorizeRequest 事件。
8. 引发 ResolveRequestCache 事件。
9. 引发 PostResolveRequestCache 事件。
10. 根据所请求资源的文件扩展名(在应用程序的配置文件中映射),选择实现 IHttpHandler 的类,对请求进行处理。 如果该请求针对从 Page 类派生的对象(页),并且需要对该页进行编译,则 ASP.NET 会在创建该页的实例之前对其进行编译。
11. 引发 PostMapRequestHandler 事件。
12. 引发 AcquireRequestState 事件。
13. 引发 PostAcquireRequestState 事件。
14. 引发 PreRequestHandlerExecute 事件。
15. 为该请求调用合适的 IHttpHandler 类的 ProcessRequest 方法(或异步版 IHttpAsyncHandler.BeginProcessRequest)。 例如,如果该请求针对某页,则当前的页实例将处理该请求。
16. 引发 PostRequestHandlerExecute 事件。
17. 引发 ReleaseRequestState 事件。
18. 引发 PostReleaseRequestState 事件。
19. 如果定义了 Filter 属性,则执行响应筛选。
20. 引发 UpdateRequestCache 事件。
21. 引发 PostUpdateRequestCache 事件。
22. 引发 EndRequest 事件。
23. 引发 PreSendRequestHeaders 事件。
24. 引发 PreSendRequestContent 事件。

Asp.net管线事件说明
时间: 2024-08-12 05:18:02

管线事件的相关文章

HttpHandler,HttpApplication, HttpModule

选择HttpHandler还是HttpModule? HttpHandler和HttpModule之间有什么差别 之所以有这个疑问,是因为在这二类对象中都可以访问Request, Response对象,都能处理请求. 我原以为在博客 用Asp.net写自己的服务框架 中做了那么多的演示应该把它们的使用方法说清楚了, 然而有些人看了我的那些示例,仍然不知道该如何选择它们,为了实现同一个目标,我既用了HttpHandler,也有用HttpModule. 现在看来,我当时设计的那些示例并不是讲清楚Ht

【基础】MVC路由规则

一.RouteData解析过程 在ASP.NET MVC中,服务器收到来自客户端的请求后,会经过一些列的处理拿到请求的数据,比如在Pipeline 管线事件中,通过订阅适当的事件,将HttpContext作为参数传入HttpContextWrapper进行封装,然后取得当前路由集合的数据RouteData进行解析,拿到具体的参数,包括请求路径.请求的参数.IRouteHandler等,通过IRouteHandler的GetHttpHandler返回一个IHttpHandler对象,通过该对象对请

ASP.NET 请求处理完整过程

请求过程 1.客户端发送请求给服务器端. 2.首先由服务器端的HTTP.SYS内核模块接受,根据端口分发给IIS(或者其他web服务器软件). 3.IIS(由一个软件进程,一个w3svc服务组成)接收到请求后,会根据端口分发给指定的工作进程 4.工作进程会对所请求的文件的文件扩展名进行检查,交给对应的扩展程序处理.(如 .aspx..ascx..ashx 和 .asmx则交给aspnet_isapi.dll扩展程序) 5.当请求为.aspx时,扩展程序会交给ASPNetRuntime托管环境调用

选择HttpHandler还是HttpModule?

最近收到几个疑问:HttpHandler和HttpModule之间有什么差别,我到底该选择哪个?之所以有这个疑问,是因为在这二类对象中都可以访问Request, Response对象,都能处理请求. 我原以为在博客 用Asp.net写自己的服务框架 中做了那么多的演示应该把它们的使用方法说清楚了, 然而有些人看了我的那些示例,仍然不知道该如何选择它们,为了实现同一个目标,我既用了HttpHandler,也有用HttpModule. 现在看来,我当时设计的那些示例并不是讲清楚HttpHandler

ASP.NET常被忽视的一些细节

原文:ASP.NET常被忽视的一些细节 前段时间碰到一个问题:为什么在ASP.NET程序中定时器有时候会不工作? 这个问题看起来很奇怪,代码好像也没错,但就是结果与预期不一致. 其实这里是ASP.NET应用程序中一个容易被忽略的经节. 后来想想,类似这样的细节问题何止这一个,我今天就把我能想到的容易被忽视的细节问题都写出来,希望大家小心这些问题. 想到我以前的博客中也零散的说过了一些,所以这篇博客中也把它们列出来了, 不过,对于以前谈过的内容,这里将只会简略地说明. HttpContext.Cu

用Asp.net写自己的服务框架

阅读目录 开始 理解Asp.net管线 HttpHandler HttpModule 关于Content-Encoding的解释 选 HttpHandler 还是 HttpModule ? 看不见的性能问题 更多实战介绍 实战演示 - 模拟更多的HttpMethod 实战演示 - URL重写 实战演示 - URL路由 实现自己的服务框架 利用[我的服务框架]将类公开成服务 [我的服务框架]支持的序列化的种类 [我的服务框架]对gzip的支持 利用[我的服务框架]发布服务的5种方式 我对发布服务的

HttpHandler的映射过程

转到底部 阅读目录 开始 回顾HttpHandler HttpHandler的映射过程 HttpContext.RemapHandler() HttpContext.RemapHandler()的另类用途 GetHandlerMapping() GetFactory() GetHandler() IHttpHandler.IsReusable 实现自己的HttpHandlerFactory 是否需要IsReusable = true ? HttpHandlerFactory的主要用途 在ASP.

ASP.NET管线与应用程序生命周期

ASP.NET管线与应用程序生命周期 ASP.NET管线与应用程序生命周期 8.1节介绍了IIS的系统架构和HTTP请求处理的总体流程,从中可以知道每个ASP.NET网站都对应着一个Web应用程序,此Web应用程序可以响应HTTP请求,为用户提供所需的信息.那么,ASP.NET应用程序具体是如何响应HTTP请求的?包括哪些具体的处理流程?这涉及到ASP.NET应用程序的生命周期问题. 8.2.1 ASP.NET应用程序生命周期* 本节以IIS 6为例分步介绍ASP.NET应用程序处理HTTP请求

[Log]ASP.NET之HttpModule 事件执行顺序

ASP.Net下的HttpModule是基于事件的处理模型,这使得我们在选择事件监听和处理的时候有更多选择.下面是对HttpModule有关事件被触发的监测: 有关代码如下 using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.