HTTP请求流程

本文详细解析了IIS如何处理HTTP请求,包括应用程序域(AppDomain)的概念、w3wp.exe和aspnet_wp.exe的作用、ISAPI的工作原理以及ManagedModules和Handlers在处理HTTP请求中的角色。

名词解析:

1:AppDomain—应用程序域,它是一个应用程序在其中执行的独立环境

2:w3wp.exe和aspnet_wp.exe—IIS6.0/IIS5.0 ASP.NET程序运行的必须进程

3:aspnet_isapi.dll—处理aspx等文件的执行文件

4:Managed Modules—托管模块

5: Handlers—处理程序

一:在操作系统启动的时候 ,IIS首先在HTTP.SYS中注册自己的虚拟路径

1:访问不到的URL或者文件,出现404错误,将错误信息返回给客户端。

2:如果请求可访问的URL,HTTP.SYS将请求交给IIS工作者进程w3wp.exe

二:ISAPI(INTERNET SERVER APPLICATION PROGRAME INTERFACE)

互联网服务器应用程序接口的工作如下:

1:映射文件与其对应的处理程序

1:从HTTP.SYS获取当期请求的信息,保存在HttpWorkerRequest类中

2:在相互隔离的AppDoamin中加载HttpRuntime

3:调用HttpRunTime的ProcessRequest(HttpWorkerRequest wr)方法

三:当请求进入HttpRunTime后,管道由Managed Modules和Handler组成,由它们处理这个HTTP请求

  1. HttpRuntime将Http请求转交给 HttpApplication,HttpApplication代表着程序员创建的Web应用程序。HttpApplication创建针对此Http请求的 HttpContext对象,这些对象包含了关于此请求的诸多其他对象,主要是HttpRequest、HttpResponse、HttpSessionState等。这些对象在程序中可以通过Page类或者Context类进行访问。、

  2. 接下来Http请求通过一系列Module,这些Module对Http请求具有完全的控制权。这些Module可以做一些执行某个实际工作前的事情。

  3. Http请求经过所有的Module之后,它会被HttpHandler处理。在这一步,执行实际的一些操作,通常也就是.aspx页面所完成的业务逻辑。可能你会觉得在创建.aspx页面并没有体会到这一过程,但是,你一定知道,.aspx 页面继承自Page类,我们看一下Page类的签名: public class Page : TemplateControl, IHttpHandler{ // 代码省略}

4:Handler处理完以后,请求再一次回到Module,此时Module可以做工作之后的事情

四:运行程序员编写的代码完成工作,IIS接收返回的数据流,交给HTTP.SYS,由HTTP.SYS将数据返回给客户端,整个请求完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EasternTiger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值