从一个页面比如www.xuxiaoyu.net的请求开始如何就能打开blogs页面的呢?这其中发生了什么样的东西?

Http请求(Http Request)

当服务器(IIS)接受到一个Http请求的时候进行以下步骤的处理:

1)服务器获取所请求的页面的后缀名(因为可能是.ASPX,.JPG等不仅仅是ASPX页面)

2)服务器会寻找处理该后缀名的应用程序,如果服务器没有找到这类的后缀名处理程序,并且这个文件也不是受保护的那么将直接返回给客户端。

3)能够处理这类后缀名的应用程序叫做ISAPI应用程序(Internet Server Application Programe Interface),他实际上时一个接口,起到一个代理的作用,主要就是把对应的请求映射到相对应的实际处理程序上去。当一个请求找到一个对应的ISAPI那么他就执行把该请求交给对应的ISAPI进行处理。

我们所常用的.aspx文件是由aspnet_isapi.dll这个程序来处理的。ASP.NET只是IIS的一个组成部分,他是ISAPI的一个扩展而已不是全部。

Http.SYS

那么IIS是如何获取外部的HTTP请求的呢?这个就要依靠HTTP.SYS这个驱动程序了。

1)在操作系统启动的时候,IIS会在HTTP.SYS中注册自己的虚拟路径

2)当一个请求是一个可访问的URL,那么HTTP.SYS就会将这个请求交给IIS工作者进程。(IIS6.0,7.0是W3WP.EXE,5.0是aspnet_wp.exe).每个工作者进程都有一个身份标识,以及一系列的可选参数(比如回收机制的设置,超时设置等)

3)后面的步骤,就是执行上面ISAPI所说的过程了。

从上面可以看出HTTP.SYS是一个内置的驱动程序,他是用来监听外部对IIS的请求的。

4)ISAPI除了进行程序映射外还进行一些其他的操作,从HTTP.SYS中获取当前HTTP请求信息,并且将这些信息保存到HttpWorkerRequest类中,在相互隔离的AppDamain中加载HttpRuntime,调用HttpRuntime的ProcessRequest方法。

5)然后就执行我们程序员所写的代码了

6)IIS接受返回数据流,并且重新返回给HTTP.SYS,最后HTTP.SYS再将这些数据返回给客户端浏览器。

HTTP管道(Pileline)

当一个Http请求到达程序后事怎么处理的呢?

当Http请求进入到Asp.net Runtime以后,它由托管模块(HttpModule)和处理程序(HttpHandler)组成,并且由管道来处理这个Http请求。

整个数据的流动如图所示:

1)HttpRuntime将Http请求转交给HttpApplication(代表着我们创建的web应用程序)。HttpApplication创建针对此Http请求的HttpContext上下文对象用来保存请求的其他对象比如HttpRequest,HttpResponse,HttpSessionState.

2)Http请求通过一系列的Module,这些Module对这个Request具有完全控制权限。然后做一些当前Handler之前的事。

3)Http请求经过所有的HttpModule之后就被HttpHandler处理。

4)然后再返回给HttpModule做一些当前Handler之后的事

Http请求处理流程相关推荐

  1. Asp.Net构架(Http请求处理流程) - Part.1

    2019独角兽企业重金招聘Python工程师标准>>> 引言 我查阅过不少Asp.Net的书籍,发现大多数作者都是站在一个比较高的层次上讲解Asp.Net.他们耐心.细致地告诉你如何 ...

  2. 接收请求处理流程_从Tomcat入口了解Spring MVC的请求处理流程(2)问题答疑

    在上一篇 从Tomcat入口了解Spring MVC的请求处理流程 中主要介绍了spring mvc如何使用以及spring的DispatcherServlet加载细节以及URL映射配置,但是还是遗留 ...

  3. Http 请求处理流程(转)

    引言 我查阅过不少Asp.Net的书籍,发现大多数作者都是站在一个比较高的层次上讲解Asp.Net.他们耐心.细致地告诉你如何一步步拖放控件.设置控件属性.编写CodeBehind代码,以实现某个特定 ...

  4. 转载--【笔记】Asp.Net构架(Http请求处理流程)

    转载--[笔记]Asp.Net构架(Http请求处理流程) 最近接触了一些Asp.Net开发人员,在聊到技术的时候,发现很多的Asp.Net开发人员都不明白在ASP.NET中一个页面请求的处理流程,今 ...

  5. ASP.Net请求处理机制初步探索之旅 - Part 5 ASP.Net MVC请求处理流程

    开篇:上一篇我们了解了在WebForm模式下一个Page页面的生命周期,它经历了初始化Init.加载Load以及呈现Render三个重要阶段,其中构造了页面控件树,并对页面控件树进行了大量的递归操作, ...

  6. ASP.NET Core管道深度剖析(2):创建一个“迷你版”的管道来模拟真实管道请求处理流程

    从<ASP.NET Core管道深度剖析(1):采用管道处理HTTP请求>我们知道ASP.NET Core请求处理管道由一个服务器和一组有序的中间件组成,所以从总体设计来讲是非常简单的,但 ...

  7. java处理请求的流程_Java Spring mvc请求处理流程详解

    Spring mvc请求处理流程详解 前言 spring mvc框架相信很多人都很熟悉了,关于这方面的资料也是一搜一大把.但是感觉讲的都不是很细致,让很多初学者都云里雾里的.本人也是这样,之前研究过, ...

  8. Struts2请求处理流程及源码分析

    Struts2请求处理流程及源码分析 根据Web.xml配置,请求首先经过ActionContextCleanUp过滤器,其为可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助(Site ...

  9. Spring MVC的请求处理流程

    Spring MVC的请求处理流程 DispatcherServlet的处理流程图 核心处理流程步骤 DispatcherServlet 的初始化过程 DispatcherServlet的处理流程图 ...

  10. IIS架构与HTTP请求处理流程(1)

    ASP.NET Web编程原理 之 IIS架构与HTTP请求处理流程(1) ************************************************************** ...

最新文章

  1. 硬盘无法访问文件系统损坏,里面的资料怎样恢复
  2. python选课系统_【精选】在Monash读Data Science,人人都拥有这样一份选课指南。
  3. 初次运行git前的配置
  4. Android短视频中如何实现720P磨皮美颜录制
  5. 南昌理工学院的计算机科学与技术专业怎么样,南昌理工学院有哪些专业及什么专业好...
  6. Oracle11g新特性:在线操作功能增强-Oracle11g在线重建索引功能增强 (转载)
  7. 拓端tecdat|R语言网络和网络流的可视化实践:通勤者流动网络
  8. HPE Comware Lab - Simulator
  9. FeedBurner 被阻尼,Feed 托管转到 FeedSky
  10. html显示证书错误代码,Win7打开网页提示证书错误的原因及解决方法
  11. 那些你所不知道的结构光技术
  12. I/O error on POST request for “http://localhost:9411/api/v2/spans”
  13. 仪表板工具Stimulsoft Dashboards中的文本元素介绍
  14. SAP SE14恢复表数据
  15. zte d90 java_电信天翼 畅享3G--ZTE D90+初用体验
  16. Git管理项目,git的基本操作语法加注释
  17. BMP文件转YUV文件_C语言实现
  18. 从空间分布、空间关系、空间演化、属性数据的扩展与再分析、数据分析扩展的角度举例分析GIS空间分析的特点与重要性,并且写出一句宣传GIS空间分析的广告语
  19. ftp工具上传,三大ftp上传工具(推荐)
  20. linux查找当前目录及其子目录下的文件

热门文章

  1. Active Directory PowerShell模块收集AD信息
  2. ABP框架使用 Swagger
  3. BZOJ 2768 [JLOI2010]冠军调查
  4. Flyweight Design Pattern 共享元设计模式
  5. java 实现微博,QQ联合登录
  6. 今天觉得自己好像比较紧张
  7. 学习笔记day5:inline inline-block block区别
  8. visual studio 2015 搭建python开发环境,python入门到精通[三]
  9. IBM T410 打开AHCI模式
  10. [Leetcode][第329题][JAVA][矩阵中的最长递增路径][DFS][拓扑排序]