ASP.NET 请求处理完整过程

请求过程

1.客户端发送请求给服务器端。

2.首先由服务器端的HTTP.SYS内核模块接受,根据端口分发给IIS(或者其他web服务器软件)。

3.IIS(由一个软件进程,一个w3svc服务组成)接收到请求后,会根据端口分发给指定的工作进程

4.工作进程会对所请求的文件的文件扩展名进行检查,交给对应的扩展程序处理。(如 .aspx、.ascx、.ashx 和 .asmx则交给aspnet_isapi.dll扩展程序)

5.当请求为.aspx时,扩展程序会交给ASPNetRuntime托管环境调用ISAPIRuntime.ProcessRequest(IntPtr ecb)方法,(ecb就是请求的句柄。句柄就是操作系统对一个资源的标识)。

6.ISAPIRuntime的PR方法中 把请求封装成HttpWorkRequest对象 然后调用HttpRuntime.pr方法。

7.在HttpRuntime的PR方法中,把HttpWorkRequest对象封装成HttpContext对象。然后通过HttpApplicationFactory生产一个HttpApplication对象出来。

8.HttpApplication对象会拿着这个HttpContext对象走管线处理请求。

9.在管线请求中,第7和8事件中默认会根据请求实例化实现IHttpHandle的对象A。第11,12事件中,会调用A的PR方法。

10.如果A是一般处理程序,则直接调用PR方法。如果是aspx程序,则会走页面生命周期过程。

页面生命周期

1.Create Instance 创建所有控件

2.IsPostBack 确定是不是第一次处理该页

3.Init 所有控件都已初始化且已应用所有外观设置后引发

3.ViewState 加载ViewState设置控件值

4.Load 执行所有的Load事件

5.ChangeEvent 执行控件更改的事件

6.Complete 事件

7.PreRender 预呈现页面,最后更改页面的机会

8.SaveState 保存状态放到页面中

9.Render 呈现页面

10.Unload 卸载

 

管线事件

时间: 2024-11-07 22:29:32

ASP.NET 请求处理完整过程的相关文章

asp.net请求处理的过程

管道中的时间全部注册在HttpApplication里面,里面所有的HttpModule都会被执行,所以我们自己定义的Module只要继承了IHttpModulename就可以在里面定义init方法来控制管道中的事件了.我们可以在init方法里面注册管道中的事件. 怎么和管道结合: 请求-->Http.SYS分类处理-->aspnet_isapi.dll-->ISPAIRuntime-->HttpWorkRequest对象-->HttpRuntime-->创建出Http

【转】各版本IIS下ASP.net请求处理过程区别

原文地址:http://www.cnblogs.com/fsjohnhuang/articles/2332074.html ASP.NET是一个非常强大的构建Web应用的平台,它提供了极大的灵活性和能力以致于可以用它来构建所有类型的Web应用. 绝大多数的人只熟悉高层的框架如: WebForms 和 WebServices --这些都在ASP.NET层次结构在最高层. 这篇文章的资料收集整理自各种微软公开的文档,通过比较 IIS5.IIS6.IIS7 这三代 IIS 对请求的处理过程, 让我们熟

ASP.Net请求处理机制初步探索之旅 - Part 3 管道

开篇:上一篇我们了解了一个ASP.Net页面请求的核心处理入口,它经历了三个重要的入口,分别是:ISAPIRuntime.ProcessRequest().HttpRuntime.ProcessRequest()以及HttpApplication.Init().其中,在HttpApplication的Init()方法中触发了请求处理管道事件的执行,本篇我们就来看看所谓的请求处理管道. (1)Part 1:前奏 (2)Part 2:核心 (3)Part 3:管道 (4)Part 4:WebForm

ASP.Net请求处理机制初步探索之旅 - Part 2 核心(转)

开篇:上一篇我们了解了一个请求从客户端发出到服务端接收并转到ASP.Net处理入口的过程,这篇我们开始探索ASP.Net的核心处理部分,借助强大的反编译工具,我们会看到几个熟悉又陌生的名词(类):HttpRuntime.HttpWorkerRequest.HttpContext.HttpApplication等. (1)Part 1:前奏 (2)Part 2:核心 (3)Part 3:管道 (4)Part 4:WebForm页面生命周期 (5)Part 5:MVC页面声命周期 一.第一个入口:I

【IIS】我所理解的IIS处理ASP.NET页面请求过程

众所周知,一个完整的动态网页的从请求到响应无非包括以下3个步骤: 1.浏览器客户端发出http请求. 2.IIS服务端接受请求. 3.处理请求并输出请求结果到浏览器客户端. 首先,简单的说说我所理解的IIS,它依赖于Windows服务World Wide Web Publish Service的,并依赖于进程w3wp.exe的.也就是说IIS的运行离不开工作进程w3wp.exe,同时每个IIS站点下的应用程序都是被用用程序池进行隔离,应用程序池即w3wp.exe的容器,通过池隔离的机制保证当某个

五、程序启动的完整过程

程序启动的完整过程: 1.先执行main函数,main内部会调用UIApplicationMain函数,该函数的声明如下: int UIApplicationMain(int argc, char argv[], NSString principalClassName, NSString *delegateClassName). argc.argv:标准main函数的参数,直接传递给UIApplicationMain进行相关处理即可 principalClassName:指定应用程序类,该类必须

Ubuntu上snmp安装、配置、启动及远程测试完整过程

0.说明 关于一个完整的教程,还是那句话,国内的要么不完整,要么就太旧了,而且思路也不清晰,所以这里写一篇完整的给大家分享一下. 虽然对于Linux主机的监控可以通过执行特定的命令来完成,但是相比之后,通过snmp的方式来获取Linux主机的信息则会更轻松简单些,只不过在使用前的配置可能需要花多一点时间,不过这绝对值得!而且如果需要开发Linux主机的监控软件,那使用snmp肯定是首选,毕竟它可以获得的信息太多太多! 后面的内容就来分享一下在Ubuntu上安装.配置.启动snmp以及进行远程测试

程序启动的完整过程

程序启动的完整过程 int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([MJAppDelegate class])); } } 执行顺序 1.main函数 2.UIApplicationMain 创建UIApplication对象 创建UIApplication的delegate对象 3.开启主运行循环 3(1).de

ASP.Net请求处理机制简单探索之旅 - Part 1 前奏

开篇:ASP.Net是一项动态网页开发技术,在历史发展的长河中WebForm曾一时成为了ASP.Net的代名词,而ASP.Net MVC的出现让这项技术更加唤发朝气.但是,不管是ASP.Net WebForm还是ASP.Net MVC在请求处理机制上大部分都是相同的,只是在请求处理管道上的处理事件做了不同的操作,因此,本文标题不区分ASP.Net WebForm和ASP.Net MVC,但在后续的介绍中会区分开来介绍. (1)Part 1:前奏 (2)Part 2:核心 (3)Part 3:管道