asp.net请求处理流程
来源:互联网 发布:下线推广 源码 编辑:程序博客网 时间:2024/05/16 23:44
1、浏览器发送请求到服务器(http://localhost)
2、服务器端处理流程
1)服务器端分为:用户模式和内核模式
I)内核模式:http.sys,对报文做基本的处理分析,分析端口号和 ip 地址
II)用户模式:
一、IIS判断一下请求资源的类型。如果是静态资源(.jpg,css,html,txt),可以直接返回给浏览器,如果是动态资源,则交给aspnet_isapi.dll
二、工作进程(w3wp.exe)
1)aspnet_isapi.dll(加载.netframework运行时) 非托管模式 (先进入ISAPIRuntime,根据传递过来的ecb句柄创建了HttpWorkerRequest,然后调用了HttpRuntime)
句柄:操作系统对所有的资源加了资源编号。操作系统根据句柄找了资源进行操作
2)HttpRuntime (调用了HttpRuntime中的ProcessRequest (HttpWorkRequest)封装了最原始的请求报文)
3、HttpContext:根据HttpWorkRequest创建了HttpContext,所以请求报文的数据都封装在了HttpContext中。(HttpContext已经完成了对HttpRequest和HttpResponse的初始化创建)
4、创建HttpApplication,对请求报文进行处理,所以将HttpContext传递到HttpApplication中。通过HttpApplicationFactory工厂创建出HttpApplication,在创建时,先判断HttpApplication池中是否有空闲的,如果有直接拿出来用,如果没有再去创建。使用完成后再放入池(stack)中。
5、调用HttpApplication中的ProcessRequest(HttpContext),对请求报文进行处理。
6、进入请求管道,对报文进行处理。流动的HttpContext
7、在请求管道的第8个事件,创建了页面类实例。并且是实现了IHttpHandler接口
8、在管道的第11 到第12 个事件之间,执行了,调用执行页面类中的ProcessRequest方法。如果是一般处理程序,执行程序员写的代码。如果是aspx,执行里面的Page_Load方法。
1)如果请求的是aspx,那么在ProcessRequest方法中调用了FrameworkInitialize(),并且在该方法中又调用了this.BuildControlTree(this)
2)创建控件树。将aspx页面中的所有控件构建成一个树,来进行组织控件的。如果aspx页面中含有html代码,那么作为普通字符来处理。封装到了LiteralControl,而该类表示:表示Html元素、文本和asp.net页中不需要在服务器上处理的任何字符串。如果是服务端控件,就要创建对应的实例。
3)确定出IsPostBack属性
4)完成初始化工作。PreInit,Init,InitComplete
5)判断请求方式,如果是post,执行LoadState操作,该操作加载状态(接收从客户端提交过来的__viewstate隐藏的值,并且进行Base64编码,然后将数值赋值给相应的控件或者ViewState对象),接下来进行处理回发过来的数据(ProcessPostData)
6)进行初始化PreLoad,Load
7)如果是Post请求,对回发过来的数据进行二次尝试处理。对改变事件的处理(change),对回发过来的数据进行处理
8)初始化完成(LoadComplete)
9)准备渲染(PreRenderComplete),最后可以对控件操作
10)SaveState(保存状态),将控件以及ViewState对象的数据,进行反Base64编码,最后赋值给__viewstate
11)对所有的控件元素,生成对应的html代码(Render渲染过程)
0 0
- ASP.NET 请求处理流程
- ASP.NET 请求处理流程
- ASP.NET请求处理流程
- ASP.NET 请求处理流程
- ASP.NET 请求处理流程
- ASP.NET 请求处理流程
- asp.net请求处理流程
- Asp.Net构架(Http请求处理流程)
- Asp.Net构架(Http请求处理流程)
- asp.net Http 请求处理流程
- ASP.Net页面请求处理流程
- Asp.Net构架(Http请求处理流程)
- Asp.Net构架(Http请求处理流程)
- Asp.Net构架(Http请求处理流程) - Part.1
- Asp.Net构架(Http请求处理流程) - Part.1
- Asp.Net构架(Http请求处理流程) - Part.1
- Asp.Net 构架(Http请求处理流程)1
- Asp.Net构架(Http请求处理流程) - Part.1
- Node.js 使用async模块
- 必须记住这几种庄家洗盘的形态
- 简易串口读取代码
- 几个零散的数学点
- MySQL 主从复制与读写分离概念及架构分析
- asp.net请求处理流程
- spring-创建 Bean 后置处理器
- Spring高级事务管理
- Android语音开发-听筒扬声器自动切换
- canvas旋转,缩放,位移动画
- 做了一个工科生涨姿势的号
- 仿微信朋友圈点赞人列表和评论人列表
- 一次因为文件名开头包含空格而导致FTP文件一直无法下载的悲剧!
- kubernetes1.6 +flannel 网络安装