HTTP 流程

本文解析了ASP.NET中HTTP请求从客户端发起,经过HTTP.sys、IIS、ISAPI等多个环节最终到达Page页面的过程,并详细介绍了HTTP请求如何被处理成HTML代码返回给客户端。

   

    asp.net 中http请求的页面通过Imodul,Ihandler,Page页面,处理成HTML代码 返回到IIS 中去了

   HTTP.sys 是操作系统的核心组件,是操作系统侦听HTTP请求的驱动程序,

    HTTP.sys 获取请求后inetinfo.exe(Internet Information Services)就是IIS的处理程序,

    IIS把HTTP请求通过 ISAPI(Internet Service application pregrams  interface) 系统筛选,

    再在CRL里面生成一个httpapplication  创建httprequest  httpresponse 等对象,在传递到httpmodule  再到httphandler  再到httpmodule 再到 httpapplication  把生成页面返回到 HTTP .sys 发回请求端。生成页面,

    所有asp.net页面都继承Page类。而Page继承Httphandler  ,也就是说所有asp.net页面实际上都实现Ihttphandler ,执行返回HTML代码,或者数据流。极端思维:我们甚至不用HTMl页面直接在 httphandler 返回数据量或者HTML代码。就行。

     HTTP请求------>Http.sys捕获------->IIS处理------>ISAPI处理(根据不同后缀名,找对应的处理程序)----->创建HTTPAplication(包含httprequest,httpresponse等对象)------>Httpmodule----->IHttphandler(所以得Page页面都实现了个接口)------>Httpmodule----->IIS------>HTTP.sys---->返回给客户端 

   ISAPI 对应处理程序实际上是IHttphandler来实现的;

   httphandler 在web.config中的配置

    path:请求的正则匹配,只有满足匹配时才执行这个httphandler

    verb:http请求的方式;如:get post,head,debug。四种方式

    type:httphandler的命名空间

   <httpHandlers>
            <add path="*.cd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
            <add path="*.adprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
            <add path="*.lddprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
            <add path="*.sdm" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
            <add path="*.sdmDocument" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
            <add path="*.mdf" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
            <add path="*.ldf" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
           
        </httpHandlers>

 

   httpmodule在web.config 中的配置

      name:httpmoudule的名称  type:httpmodule的命名空间;

 <httpModules>
            <add name="Profile" type="System.Web.Profile.ProfileModule" />
            <add name="ErrorHandlerModule" type="System.Web.Mobile.ErrorHandlerModule, System.Web.Mobile, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
            <add name="ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
            <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" />
            <add name="ScriptModule-4.0" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        </httpModules>

 

   

    

转载于:https://www.cnblogs.com/jiangqiang/archive/2012/11/21/2780001.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值