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 卸载

 

 

管线事件

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。