IIS 是如何处理 ASP.NET 请求的
#main{
width:1250px;
}
#mainContent{
width:915px
}
img#imgTop{
max-width:850px;
}

Web 服务器 VS Web 应用程序
在了解 IIS 如何处理 ASP.NET 请求之前,我们必须要清楚 Web 服务和 Web 应用程序之间的界限。Web 服务器与 Web 应用程序之间的关系,就像 操作系统 与 普通桌面应用程序之间的关系一样 —— 一个提供了运行环境,一个提供实际的业务功能实现。简短一点说,一个是宿主 Host ,一个是应用程序 Application。操作系统能够为各种各样的应用程序提供运行环境,而 Web 服务器是构建于操作系统之上的、具有针对性的应用程序宿主(针对 Web 应用程序),就像 Windows 服务一样。没错,如果你对 Windows 服务的了解多过 Web 服务器,那么使用类比法通过 Windows 服务来了解 Web 服务器是个不错的选择(事实上用 Web服务 替代 Web服务器来表述可能会更合理一点,但这样就很容易将 Web服务 与 .NET Web Service 技术搞混)。
IIS(Internet Information Services)
在中文操作系统中,IIS 被称为 互联网信息服务 —— 这是 Microsoft 公司提供的运行于 Windows 操作系统之上的 Web 服务器,它的功能绝不只是能处理 ASP.NET 请求。但本文要尝试讲明的是 IIS 如何处理 ASP.NET 请求,所以,我们可以假设“IIS就是为 ASP.NET 而生的”。
IIS 如何处理 ASP.NET 请求
作为 Web 服务器,IIS 的主要工作是接收请求并通过Web管理服务(Web Admin Services,WAS)将请求分发给不同的应用程序池。
应用程序池接收到请求后,根据当前运行状况将请求投放给某个工作进程(w3wp.exe),工作进程会依据请求 url 的相关特性(比如后缀 aspx)选择和加载特定的 ISAPI(Internet Server Application Programming Interface,网络服务应用编程接口)。
ASP.NET 对应的 ISAPI 为 aspnet_isapi.dll, 它将构造一个 HttpRuntime 作为应用程序入口,从这里开始,请求将会来回经过HttpApplication 中的一序列 HttpModule 和 HttpHandler,然后做出响应。
aspnet_isapi.dll
.NET 程序员应该都知道,想要 ASP.NET 正常运行,必须安装 .NET Framework。但有时候明明已经安装了 .NET Framework,部署在 IIS 上的网站却怎么也不能正常访问,然后在网上折腾捣鼓,终于在运行 aspnet_regiis 并设置应用程序池的 .NET Framework 版本之后就可以正常访问了。 没错,运行 aspnet_regiis 的目的是为了 将相应版本的 .NET Framework 注册到 IIS ,如果你是先安装 IIS ,后装 .NET Framework, 就无需那么复杂 —— .NET Framework 会自动注册。
.NET Framework 注册到 IIS 时,就会给 IIS 添加相应的 ISAPI —— aspnet_isapi.dll。
IIS 如何知道哪个请求该分发给哪个应用程序池
IIS 内核模块(Kernel Mode)包含一个 HTTP.SYS 文件。
向 IIS 添加一个应用程序池的同时会生成一个对应的标识ID,并被记录到 HTTP.SYS(事实上记录的是 url 与 应用程序池之间的对应关系)。
任何来自客户端的 HTTP 请求都将首先触发 HTTP.SYS 。事实上 HTTP.SYS 本身不会执行任何代码,它仅仅是监听客户端的 HTTP 请求。HTTP 请求包含了 Web 站点的主机(或 IP)、端口和资源路径信息,即 url —— 根据映射,IIS 自然就知道如何分发请求给应用程序池了。
IIS 是如何处理 ASP.NET 请求的的更多相关文章
- IIS是如何处理ASP.NET请求的
每次服务器接受到请求,都要先经IIS处理.这不是一篇描述ASP.NE生命周期的文章,仅仅是关于IIS操作的.在我们开始之前,先了解这些会有助于对全文的理解,同时欢迎反馈和建议. 什么是Web Serv ...
- ASP.NET Core应用针对静态文件请求的处理[3]: StaticFileMiddleware中间件如何处理针对文件请求
我们通过<以Web的形式发布静态文件>和<条件请求与区间请求>中的实例演示,以及上面针对条件请求和区间请求的介绍,从提供的功能和特性的角度对这个名为StaticFileMidd ...
- 【续集】在 IIS 中部署 ASP.NET 5 应用程序遭遇的问题
dudu 的一篇博文:在 IIS 中部署 ASP.NET 5 应用程序遭遇的问题 针对 IIS 部署 ASP.NET 5 应用程序的问题,在上面博文中主要采用两种方式尝试: VS2015 的 Publ ...
- 【深入ASP.NET原理系列】--ASP.NET请求管道、应用程序生命周期、整体运行机制
微软的程序设计和相应的IDE做的很棒,让人很快就能有生产力..NET上手容易,生产力很高,但对于一个不是那么勤奋的人,他很可能就不再进步了,没有想深入下去的动力,他不用去理解整个框架和环境是怎么执行的 ...
- StaticFileMiddleware中间件如何处理针对文件请求
StaticFileMiddleware中间件如何处理针对文件请求 我们通过<以Web的形式发布静态文件>和<条件请求与区间请求>中的实例演示,以及上面针对条件请求和区间请求的 ...
- 在不同版本的 IIS 上使用 ASP.NET MVC
ASP.NET MVC Framework 依赖于 URL 路由.为了利用 URL 路由,可能不得不在 Web 服务器上执行额外的配置步骤.这些步骤取决于 Internet Information S ...
- ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限
开发了一个导入TXT文件的功能,执行过程中出错.提示:.....ASP.NET 未被授权访问所请求的资源.请考虑授予 ASP.NET 请求标识访问此资源的权限.ASP.NET 有一个在应用程序没有模拟 ...
- 不同版本的 IIS 中使用 ASP.NET MVC(C#)【转】
由微软 ASP.NET 团队|2008 年 8 月 19 日 推特 在本教程中,您将学习在不同版本的 Internet Information Services 中如何使用 ASP.NET MVC 和 ...
- asp.net请求响应模型原理随记回顾
asp.net请求响应模型原理随记回顾: 根据一崇敬的讲师总结:(会存在些错误,大家可以做参考) 1.-当在浏览器输入url后,客户端会将请求根据http协议封装成为http请求报文.并通过主sock ...
随机推荐
- 完美融合 nextjs 和 antd
相信大家在使用nextjs的时候,难免遇到一些坑.其实可能大部分原因在于 nextjs 做了很多封装,我们可能不能第一时间搞清楚包括它相关的所有配置,比如其中的webpack配置.我前面也写过 SSR ...
- Django:常见的orm操作
ArticlePost模型对应的表如下: 1.查询两个日期之间2019.04.20到2019.04.25之间的文章 import datetime from.models import Article ...
- openvSwitch 基本命令
建立ovs接口连接两个namespace组成二层网络 环境搭建拓扑 br0 +--------------------------------------+ +--+ +--+ +---+ | tap ...
- 【UOJ244】 【UER #7】短路(贪心)
传送门 uoj Solution 简单题? 考虑一条路径长什么样子,一定是经过某一个字母环的左上角,那么答案就很简单了. 我们记一个前缀最小值,这样子让他一路走下去一定是最优! 然后扫一遍就好了. 代 ...
- SpringBoot2 使用Spring Session集群
有几种办法: 1.扩展指定server利用Servlet容器提供的插件功能,自定义HttpSession的创建和管理策略,并通过配置的方式替换掉默认的策略.缺点:耦合Tomcat/Jetty等Serv ...
- 不同的最小割(cqoi2016,bzoj4519)(最小割树)
学过图论的同学都知道最小割的概念:对于一个图,某个对图中结点的划分将图中所有结点分成 两个部分,如果结点\(s,t\)不在同一个部分中,则称这个划分是关于\(s,t\)的割.对于带权图来说,将 所有顶 ...
- C#6.0语言规范(十六) 异常
C#中的异常提供了一种结构化,统一且类型安全的方法来处理系统级和应用程序级错误条件.C#中的异常机制与C ++的异常机制非常相似,但有一些重要的区别: 在C#中,所有异常必须由派生自的类类型的实例表示 ...
- vue 路由传参的三种基本模式
路由是连接各个页面的桥梁,而参数在其中扮演者异常重要的角色,在一定意义上,决定着两座桥梁是否能够连接成功. 在vue路由中,支持3中传参方式. 场景,点击父组件的li元素跳转到子组件中,并携带参数,便 ...
- [原创]内网渗透JSP webSehll连接工具
工具: JspShellExec编译: VS2012 C# (.NET Framework v2.0)组织: K8搞基大队[K8team]作者: K8拉登哥哥博客: http://qqhack8.b ...
- 01-01java概述 doc命令、jdk\jre下载安装、path、classpath配置、开发中常见小问题
1:计算机概述(了解) (1)计算机 (2)计算机硬件 (3)计算机软件 系统软件:window,linux,mac 应用软件:qq,yy,飞秋 (4)软件开发(理解) 软件:是由数据和指令组成的.( ...