[转帖] IIS经典模式和集成模式的区别
在 IIS 7.0 中,应用程序池有两种运行模式:集成模式和经典模式。
https://blog.csdn.net/hongwei_23/article/details/44300923
这里面添加一个 stackoverflow的简介:
In classic mode IIS works h ISAPI extensions and ISAPI filters directly. And uses two pipe lines , one .x works just and you dont .x features. In integrated mode IIS and ASP.Net are tightly coupled rather then depending on just two DLLs on Asp.net as in case of classic mode.
应用程序池模式会影响服务器处理托管代码请求的方式。
如果托管应用程序在采用集成模式的应用程序池中运行,服务器将使用 IIS 和 ASP.NET 的集成请求处理管道来处理请求。
如果托管应用程序在采用经典模式的应用程序池中运行,服务器会继续通过 Aspnet_isapi.dll 路由托管代码请求,其处理请求的方式就像应用程序在 IIS 6.0 中运行一样。
经典模式
指的是与IIS 6或者之前版本保持兼容的一种模式.
在IIS 6.0中的经典模式中,ASP.NET是一个添加到IIS中的ISAPI。IIS 7.0之所以支持这种模式,是为了做到向后兼容。但是,经典模式缺少许多集成模式才能提供的特性。在经典模式中,IIS拥有自身的管道,这些管道可以通过创建一个ISAPI扩展进行扩充,而ISAPI扩展是以难以开发而著称的。ASP.NET作为一个ISAPI扩展运行,只是IIS管道中的一项组成部分。
注意,在这种情况下,ASP.NET仅当IIS处理ISAPI扩展时才能够发挥作用。
利用文件扩展名,可以判断使用哪个ISAPI处理程序。例如,可以将扩展名为.aspx 和.ascx的文件映射到aspnet_isapi.dll;并且将扩展名为.asp的文件映射到asp.dll,这样就可以处理传统的ASP页面;此外,将扩展名为.php的文件映射到php.dll,这样就可以处理PHP页面,前提是已经安装了php.dll。
此外,在IIS 6.0和IIS 7.0的经典模式中,某些特性是重复的。例如,错误处理就是一种重复的特性,因为IIS可以处理非ASP.NET页面,而ASP.NET可以处理所有将处理程序映射为aspnet_isapi.dll的页面。
在IIS 6.0中,我们可以将所有文件类型都映射到ASP.NET,但是这样做存在一些限制。最大的限制就是如何处理默认文档:一个默认文档仅当在global.asax中或者在一个HTTP模块中被指定为默认文档时,这个默认文档才能够得到处理。某些自定义的配置需要使用aspnet_isapi.dll处理所有的文件类型。IIS 7.0可以轻易地解决这个问题。
经典模式可以在无须修改web.config的前提下运行现有的Web网站,因此,如果使用的Web farm中既包括IIS 6.0服务器,也包括IIS 7.0服务器,或者因为某些原因无法将web.config文件转换为遵循新语法的web.config文件,那么就可以使用经典模式。
集成模式:
这种全新的模式,允许我们将ASP.NET更好地与IIS集成,甚至允许我们在ASP.NET中编写一些功能(例如Module)来改变IIS的行为(扩展)。集成的好处是,不再通过ISAPI的方式,提高了速度和稳定性。至于扩展,则可以使得我们对于IIS以及其他类型的请求有更多的控制。
利用集成模式,可以将ASP.NET作为IIS的有机组成部分。现在,IIS服务器的功能被划分为40多个模块,因此也就将IIS和ASP.NET的功能划分为不同的组成部分。诸如StaticFileModule、BasicAuthenticationModule、FormsAuthentication、Session、Profile,以及RoleManager等模块都是IIS管道的组成部分。
注意,FormsAuthentication、Session、Profile,以及RoleManager原本就是ASP.NET的组成部分,与IIS并无关系。
IIS管道提供了二十多种事件,开发人员可以利用这些事件来扩展Web服务器的功能。实际上,通过创建定制模块,同时更新applicationHost.config,可以仅使用自定义模块,而无须再使用微软公司提供的内置模块,我们可以将IIS 7.0中的模块替换为自定义的模块。
经典模式和集成模式之间配置的区别
IIS 7.0对配置文件进行了一些修改,Web开发人员可以使用这些修改内容。例如,节就是这样一项修改,无论是经典模式还是集成模式都可以识别节,同时,节既可以在applicationHost.config文件中设置,也可以在web.config文件中设置。节既可以控制静态页面,也可以控制动态页面。即使在经典模式中,节也具有重要作用,它可以帮助Web开发人员在web.config文件中设置不同的IIS配置。
在集成模式中,HTTP模块和HTTP处理程序不再定义于中,而是定义于中。如果在集成模式中运行一个包括了HTTP模块或HTTP处理程序的web.config文件,那么将会发生失效。幸运的是,微软公司已经详细规定了一个编号为500.22的错误信息,这个错误信息说明了如何一步步地迁移web.config文件。
[转帖] IIS经典模式和集成模式的区别的更多相关文章
- [转帖]IIS7.5应用程序池集成模式和经典模式的区别介绍
IIS7.5应用程序池集成模式和经典模式的区别介绍 之前转帖过一个 但是感觉不如这个说的细: https://www.jb51.net/article/31010.htm 关注脚本之家微信公众号(jb ...
- IIS 7 托管管道模式 经典模式(Classic) 集成模式(Integrated) 分析与理解
IIS 7.0 支持两种管道模式:一种是IIS 7.0最新提供的集成管道模式,另一种是经典管道模式,经典管道模式是由先前版本的IIS提供的. 我们可以通过应用程序池设置管道模式,这项功能对IIS管理员 ...
- IIS经典模式和集成模式在管道模型中的不同
问题: 有时候我们配置IIS后可能运行提示以下错误: HTTP 错误 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置. 其中由 ...
- IIS 7.0的集成模式和经典模式
IIS7.0中的Web应用程序有两种配置模式:经典模式和集成模式.经典模式是为了与之前的版本兼容,使用ISAPI扩展来调用ASP.NET运行库, 原先运行于IIS6.0下的Web应用程序迁移到IIS7 ...
- [转]IIS应用程序池经典模式转集成模式解决方案
经典模式和集成模式的区别: IIS7.0中的Web应用程序有两种配置形式:经典形式和集成形式. 经典形式是为了与之前的版本兼容,运用ISAPI扩展来调用ASP.NET运转库,原先运转于IIS6.0下的 ...
- 【IIS】IIS中同时满足集成模式和经典模式
手里有一个项目--系统设置(主要功能是对系统一些字典表的设置.权限管理等功能).在VS上运行没有任何问题.可是发布到IIS上之后,报黄页. 发布后程序运行环境为: windows 7 32位 IIS为 ...
- iis 经典模式和集成模式
IIS7.0中的Web应用程序有两种配置模式:经典模式和集成模式.两者区别大家可以参考下,根据实际情况选用. 经典模式是为了与之前的版本兼容,使用ISAPI扩展来调用ASP.NET运行库,原先运行于 ...
- iis7.5 应用程序池 经典模式和集成模式的区别
在 IIS 7.5 中,应用程序池有两种运行模式:集成模式和经典模式. 应用程序池模式会影响服务器处理托管代码请求的方式. 如果托管应用程序在采用集成模式的应用程序池中运行,服务器将使用 IIS 和 ...
- 对IIS7经典模式和集成模式的理解(转载)
从IIS6新增应用程序池的概念,到现在IIS7,对HTTP请求处理功能已经越来越精确化和不断改善,IIS7应用程序池新增了经典模式和集成模式可供选择,不管官方还是一些书籍或文章都有介绍,但多数过于官方 ...
随机推荐
- 计算机网络关于IP地址的计算问题
1.某校园网地址是202.100.192.0/18,要把该网络分成30个子网,则子网掩码应该是 ( ). A. 255.255.200.0 B. 255.255.224.0 C. 2 ...
- Scala 上下文界定
上下文界定的类型参数形式为T:M的形式,其中M是一个泛型,这种形式要求存在一个M[T]类型的隐式值: /** * 上下文界定 */ @Test def testOrdering_Class_Conte ...
- P2665 [USACO08FEB]连线游戏Game of Lines
本着dp的心情,结果是道水题STL set就行了 题意:看有多少种斜率(题在那里半天说多少直线(不平行的)),其实就是找斜率的种类 #include<cstdio> #include&l ...
- leetcode 338. Counting Bits,剑指offer二进制中1的个数
leetcode是求当前所有数的二进制中1的个数,剑指offer上是求某一个数二进制中1的个数 https://www.cnblogs.com/grandyang/p/5294255.html 第三种 ...
- Python web项目Django部署在Ubuntu18.04腾讯云主机上
Django2.1 + Python3.6 + nginx + uwsgi 部署到Ubuntu18.04 材料准备 准备一个Django项目 准备一台Ubuntu18.04的主机 ssh连接到主机(腾 ...
- 查看Orcale数据里的表是否有变化
由于我们公司一个数据库两个应用在使用,导致一个应用修改了数据库,另一个应用用的缓存而不知道有更新还是原来的结果.原来的处理方式是采用session缓存的方式,用户登出了就清空缓存,这样只需要重新登录一 ...
- 如何扩展32位EXE程序的使用内存
1 运行Visual studio的命令行,执行下面命令:editbin /LARGEADDRESSAWARE “C:\Program Files\Skyline\TerraExplorer Pro\ ...
- [03] Spring "Hello World"
0.写在前面的话 本篇以一个简单的示例,描述了Spring通过容器对于Java类的装载和获取.在以下我们可以看到,有一个Java类Coder,我们全程并没有手动调用new来进行实例化,而是从Sprin ...
- Oracle存储过程的调试
在工作汇总有时候程序会调用存储过程来实现某些功能,因为这样的话,速度更快.所以学习如何调试存储过程就非常的重要. 首先,打开PLSQL DEVELOPMENT首先介绍一下,这个软件的各个窗口是用来干什 ...
- ASP.NET MVC中jQuery与angularjs混合应用传参并绑定数据
要求是这样子的,在一个列表页中,用户点击详细铵钮,带记录的主键值至另一页.在另一外页中,获取记录数据,然后显示此记录数据在网页上. 先用动图演示: 昨天有分享为ng-click传递参数 <ang ...