设为首页 收藏本站
查看: 990|回复: 0

[经验分享] 我所理解的IIS处理ASP.NET页面请求过程

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2014-5-7 21:08:08 | 显示全部楼层 |阅读模式
众所周知,一个完整的动态网页的从请求到响应无非包括以下3个步骤:

  1、浏览器客户端发出http请求。

  2、IIS服务端接受请求。

  3、处理请求并输出请求结果到浏览器客户端。



  首先,简单的说说我所理解的IIS,它依赖于Windows服务World Wide Web Publish Service的,并依赖于进程w3wp.exe的。也就是说IIS的运行离不开工作进程w3wp.exe,同时每个IIS站点下的应用程序都是被用用程序池进行隔离,应用程序池即w3wp.exe的容器,通过池隔离的机制保证当某个应用程序池出错即网站出现错误或进程资源回收时候,不会影响到其他应用程序池中的应用正常访问,接下来说说具体的IIS处理细节:

  1、从IIS6.0版本开始,引入了文件HTTP.SYS(一个位于Win2003和WinXP SP2中核心组件,据我了解支持IIS的操作系统中均有此文件,它能够让任何应用程序通过它提供的接口,以http协议进行信息通讯)。当浏览器发出请求地址,地址自动解析到某台IP对应的服务器,该服务器中的IIS站点会自动触发文件HTTP.SYS,此时的HTTP.SYS会自动寻找到对应的应用程序池ID,这里的应用程序池ID是在开发者活实施人员部署这个站点站点之后已自动注册到HTTP.SYS,所以HTTP.SYS才能准确的应用程序池定位。因此一个HTTP.SYS是对应到多个应用程序池的。

  2、当应用程序池接收到用户发来的请求后,会接着传给工作进程,即w3wp.exe进程,该进程检查来请求的URL后缀以确定加载哪个ISAPI扩展。ASP.NET加载时会附带自己的ISAPI扩展(aspnet_isapi.dll),以便在IIS中映射,这个映射可以在IIS的管理中心进行配置与查看。

  3、一旦工作进程加载了aspnet_isapi.dll, 就会构造一个HttpRuntime类,该类是应用程序的入口,通过ProcessRequest方法处理请求。

  4、方法ProcessRequest被调用后,一个HTTP上下文对象即HttpContext的实例就产生了。可通过HTTPContent.Current获取到这个实例,且该实例会在整个生命周期中存活,我们通过它可以获取到一些常用对象,如Request,Response,Session 等。

  5、之后HttpRuntime会通过HttpApplicationFactory类加载一个HttpApplication对象。每一次请求都要穿过一堆HttpModule到达HttpHandler,以便被响应。而这些HttpModule就被配置在HttpApplication中。同时,开发者也可自定义HttpModule从而来完成一些特殊的http拦截与相应的处理。

  6、所有请求穿过HttpModule需抵达相应的HttpHandler,然后HttpHandler根据请求资源,产生并输出内容。

  完成整个步骤后,ASP.NET页面生命周期就开始了。

  个人总结:对于IIS处理机制的理解有助于加深开发人员对于Form验证、windows验证模式、HTTP拦截处理的原理的认识,以及IIS网站的性能的优化都会有一定的指导作用。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-18855-1-1.html 上篇帖子: IIS7.5下ASP设置 下篇帖子: Win2003搭建IIS+php5.2.6
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表