IIS7中ASP.net 请求处理过程说明
IIS7 站点启动并处理请求的步骤如下图:
步骤 1 到 6 ,是处理应用启动,启动好后,以后就不需要再走这个步骤了。
上图的8个步骤分别如下:
- 当客户端浏览器开始HTTP 请求一个WEB 服务器的资源时,HTTP.sys 拦截到这个请求。
- HTTP.sys contacts WAS to obtain information from the configuration store.
- WAS 向配置存储中心请求配置信息。applicationHost.config。
- WWW 服务接受到配置信息,配置信息指类似应用程序池配置信息,站点配置信息等等。
- WWW 服务使用配置信息去配置 HTTP.sys 处理策略。
- WAS starts a worker process for the application pool to which the request was made.
- The worker process processes the request and returns a response to HTTP.sys.
- 客户端接受到处理结果信息。
W3WP.exe 进程中又是如果处理得呢?? IIS 7 的应用程序池的托管管道模式分两种: 经典和集成。 这两种模式下处理策略各不相通。
本文作者:郭红俊 http://blog.joycode.com/ghj
IIS 6 以及 IIS7 经典模式的托管管道的架构
在IIS7之前,ASP.NET 是以 IIS ISAPI extension 的方式外加到 IIS,其实包括 ASP 以及 PHP,也都以相同的方式配置(PHP 在 IIS 采用了两种配置方式,除了 IIS ISAPI extension 的方式,也包括了 CGI 的方式,系统管理者能选择 PHP 程序的执行方式),因此客户端对 IIS 的 HTTP 请求会先经由 IIS 处理,然后 IIS 根据要求的内容类型,如果是 HTML 静态网页就由 IIS 自行处理,如果不是,就根据要求的内容类型,分派给各自的 IIS ISAPI extension;如果要求的内容类型是 ASP.NET,就分派给负责处理 ASP.NET 的 IIS ISAPI extension,也就是 aspnet_isapi.dll。下图是这个架构的示意图。
IIS 7 应用程序池的 托管管道模式 经典 模式也是这样的工作原理。 这种模式是兼容IIS 6 的方式, 以减少升级的成本。
IIS6 的执行架构图,以及 IIS7 应用程序池配置成经典模式的执行架构图
相关推荐
-
asp.net iis7默认文档错误异常的解决方法
默认文档异常错误 当修改默认文档时IIS提示信息 执行此操作时出错. 详细信息: 文件名: \\?\E:\DNN\web.config 行号: 102 错误: 在唯一密钥属性"value"设置为"Default.aspx"时,无法添加类型为"add"的重复集合项 错误原因:是IIS中已经设置了默认文档为default.aspx,这个时候就出现的冲突,引发的异常 解决方法:在项目的web.config文件中找到添加文档节点<add />
-
ASP.NET在IIS7中上下文中不可用的解决方法
Johnny换上Win7已经有几个月的时间,不过前几天重装了系统,依旧用的是Win7,只是今天在打开VS2009工程后在IE中测试时一打开便出现一个错误如下: 请求在此上下文中不可用 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.Web.HttpException: 请求在此上下文中不可用 源错误: 复制代码 代码如下: 行 28: protected void Application
-
IIS7.5 检测到在集成的托管管道模式下不适用的 ASP.NET设置
在调试一个网上下载的.net网站时,打开就提示出错: 错误摘要 HTTP 错误 500.22 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置. 根据提示错误,应该是需要把应用程序池的托管管道模式从[集成]改为[经典], 打开IIS管理器,点击左上角的[应用程序池],在[应用程序池]里面找到该网站的应用程序池名称,双击打开基本设置,把托管管道模式改为[经典]. 这是网站使用独立应用程序池的更改方法,如果是共享一个默认的应用程序池,应该是修
-
使用ASP.NET操作IIS7中应用程序
在最新发布的启明星Portal里,增加了安装程序,下面说一下.NET对IIS7操作.IIS7的操作和IIS5/6有很大的不同,在IIS7里增加了 Microsoft.Web.Administration 命名空间里,增加了ServerManager.Site几个大类来操作IIS7. 下面是一些核心代码,可以直接使用 建立虚拟目录 建立虚拟目录时,默认使用"Default Web Site",也就是默认建立在Default Web Site, CreateVdir需要两个参数:虚拟路径名
-
让Win2008+IIS7+ASP.NET支持10万并发请求
今天下午17点左右,博客园博客站点出现这样的错误信息: Error Summary: HTTP Error 503.2 - Service Unavailable The serverRuntime@appConcurrentRequestLimit setting is being exceeded. Detailed Error Information: Module IIS Web Core Notification BeginRequest Handler StaticFile Erro
-
win7和win2008 r2下配置IIS7(ASP.net运行环境)
1.先要设置应用程序池(ApplicationPool)为Classic.NETAppPool,而不是默认的DefaultAppPool,可以在网站目录里对每个站点设置,也可以在站点进行单独设置. 控制面板--系统和安全--管理工具--Internet信息服务(IIS)管理器,打开IIS管理器.选中左侧的默认网站,单击右侧的高级设置,将应用程序池设置为Classic.NETAppPool. 2.选中左侧的"应用程序池",选中"Classic.NETAppPool",
-
Win7旗舰版中的IIS7配置asp.net的运行环境
以前弄过好多次,都没有成功,昨天晚上不知怎么地就成功了,借用我同学的一句话,这叫"灵光一闪",废话不多说了,这个成功是有图有视频有真相地哈! 这篇博文发表都三个月了,我自认为算是很详细了,可是还是很多人没有配置出来(天天有人在群里问我怎么配置),所以今天特意录成视频供大家参考. 特意申明:这是配置asp.net运行坏境,不是asp,asp和asp.net是有区别的.asp.net如果还是配置不出可以问,asp就算了,我不懂asp哦!无法帮你解决. Win7旗舰版中的IIS配置asp.n
-
IIS7 配置大全(ASP.NET 2.0, WCF, ASP.NET MVC,php)
一.IIS7.0 配置 ASP.NET2.0 1.ASP.NET 2.0 部署 1)首先打开win7 的特性,路径我已标注 下面选中的是ASP.NET2.0, 如果要支持ASP.NET1.1,你的选中IIS6兼容 2.)设置安全选项 3)添加.Net经典应用程序池 4)将站点转换为Application 5)为站点添加 yourmachinename\IIS_IUSRS权限 6.)右键站点-Manage Application-Advanced Setting 设置当前站点为Classic .N
-
Win2008 server + IIS7 设置身份模拟(ASP.NET impersonation)
作者:eaglet 转载请注明出处 IIS7 与 IIS 6 相比有了很大的改动,原来在 IIS 6 下可以的设置到了 IIS 7 下有的会发生变化.身份模拟的配置上,IIS7 和 IIS6有很大不同,网上IIS6的身份模拟的文章比较多,但介绍IIS7的比较少,我把的一些折腾的经验在这篇博客中写下来,以供参考. IIS 7 有两种 ASP.NET Application Mode. 一种是 集成模式(Integrated Mode) 这个是默认的模式,也是微软推荐的模式,另一种是 经典模式(Cl
-
IIS7中ASP.net 请求处理过程说明
IIS7 站点启动并处理请求的步骤如下图: 步骤 1 到 6 ,是处理应用启动,启动好后,以后就不需要再走这个步骤了. 上图的8个步骤分别如下: 当客户端浏览器开始HTTP 请求一个WEB 服务器的资源时,HTTP.sys 拦截到这个请求. HTTP.sys contacts WAS to obtain information from the configuration store. WAS 向配置存储中心请求配置信息.applicationHost.config. WWW 服务接受到配置信息
-
Win7的IIS7中ASP获得的系统日期格式为斜杠的解决办法
我们可以通过更改注册表来解决这个问题: 打开注册表,进入到[HKEY_USERS\.DEFAULT\Control Panel\International],然后 1.将键 sDate 的值由 / 改为 - 2.将键 sShortDate 的值由 yyyy/M/d 改为 yyyy-M-d 3.重启IIS即可.
-
Win7、win2008中让IIS7支持asp的方法
Win2008服务器重装系统后,运行ASP站点(使用Access数据库)报N多错误,经过一小时总算解决,总结如下: 在win2008服务器上 1. 本站点应用程序池改为启用32位. 2. 本站点启用父路径. 3. 全局站点的 错误页 - 编辑功能设置 - 错误响应:选择"详细错误". 4. 给 C:\Window\Temp 目录,设置IUSR读写权限,解决(Microsoft JET Database Engine 错误 '80004005')错误. 1. 让IIS7支持ASP Win
-
各版本IIS下ASP.net请求处理过程区别第1/3页
绝大多数的人只熟悉高层的框架如: WebForms 和 WebServices --这些都在ASP.NET层次结构在最高层. 这篇文章的资料收集整理自各种微软公开的文档,通过比较 IIS5.IIS6.IIS7 这三代 IIS 对请求的处理过程, 让我们熟悉 ASP.NET的底层机制 并对请求(request)是怎么从Web服务器传送到ASP.NET运行时有所了解.通过对底层机制的了解,可以让我们对 ASP.net 有更深的理解. IIS 5 的 ASP.net 请求处理过程 对图的解释: IIS
-
各版本IIS下ASP.net请求处理过程分析第1/3页
绝大多数的人只熟悉高层的框架如: WebForms 和 WebServices --这些都在ASP.NET层次结构在最高层. 这篇文章的资料收集整理自各种微软公开的文档,通过比较 IIS5.IIS6.IIS7 这三代 IIS 对请求的处理过程, 让我们熟悉 ASP.NET的底层机制 并对请求(request)是怎么从Web服务器传送到ASP.NET运行时有所了解.通过对底层机制的了解,可以让我们对 ASP.net 有更深的理解. IIS 5 的 ASP.net 请求处理过程 对图的解释: IIS
-
Asp.net请求处理之管道处理介绍
在了解Asp.net请求处理流程的过程中,个人认为有必要从源代码的角度来了解asp.net管道是怎么实现的. 在此之前大家有必要了解一些asp.net请求流程的基本东东,如ASP.NET 请求处理流程.Asp.net管道.ASP.NET管线与应用程序生命周期 我们大家都知道HttpRuntime主要的方法是 public static void ProcessRequest(HttpWorkerRequest wr) 复制代码 代码如下: private void ProcessRequestI
-
64位win7的IIS7下asp与access的连接问题
最近升级了电脑主机,淘宝买的,卖家把我装好了64位的win7和一些基本程序. 自己有个小程序是asp的,要让它运行起来,于是装上IIS(之前在添加删除程序里,现在叫 打开或关闭Windows功能 ,找了好一会儿),搭好web后,发现一直在运行,页面一页空白. 好久没碰asp程序了,但还是有点印象的.于是打开程序,找到连接数据库那段后,加了句:Response.Write Err.Description,提示没记录下来,大概是没有找到合适的应用程序. 看了下机子上,有word,excel等,没ac
-
IIS7中Web.config的rewrite实例分析讲解,教你看懂重写规则
本文详细介绍解释了IIS7 Web.config rewrite规则设置url重写功能,通过讲解实例的语法结构和标签用法,搭配一些简单的正则表达式,你可以写出符合自己要求的重写规则. 首先请注意,本文适用IIS7及以上rewrite重写功能. 同样要注意的是,要实现在 Web.config 的rewrite重写功能,你必须先安装 URL_Rewrite 重写模块. 下面是本文要介绍的内容,如何通过 Web.config 的rewrite规则,设置url重写功能. 实例代码 <?xml versi
-
64位系统中IIS7运行ASP时出现ADODB.Connection 800a0e7a错误的解决方法
今天将一个ASP网站拷贝到64位的Windows7中运行,IIS7安装都没有问题,可就是死活运行不了,总是出现ADODB.Connection错误"800a0e7a",真是奇怪,之前在XP中运行一点问题都没有的.起初以为是代码上的原因,于是写一段最简单的连接数据库的代码,还是出错,研究半天终于找到了解决方法,拿来分享. 原因是因为在64位Windows7操作系统中,IIS7应用程序池默认没有启用32位应用程序,而我们连接ACCESS数据库的驱动程序Microsoft.Jet.OLEDB
随机推荐
- jQuery选择器之子元素过滤选择器
- Bootstrap+jfinal实现省市级联下拉菜单
- js自定义鼠标右键的实现原理及源码
- ASP.NET 6种常用数据库的连接方法
- 用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
- 在PHP3中实现SESSION的功能(二)
- C++的static关键字及变量存储位置总结
- js replace()去除代码中空格的实例
- 分享python数据统计的一些小技巧
- 数据类型和Json格式分析小结
- Jquery性能优化详解
- jQuery 定时局部刷新(setInterval)
- 改进UCHOME的记录发布,增强可访问性用户体验
- 基于node实现websocket协议
- 随机性死机故障分析与排除
- java实现将域名解析成ip示例
- C语言中fgetgrent()函数和fgetpwent()函数的用法对比
- 万兆揭示光纤通讯技术发展方向
- Java对象流实例代码
- vue.js实现的幻灯片功能示例