IIS 7.0的集成模式和经典模式
IIS7.0中的Web应用程序有两种配置模式:经典模式和集成模式。经典模式是为了与之前的版本兼容,使用ISAPI扩展来调用ASP.NET运行库,
原先运行于IIS6.0下的Web应用程序迁移到IIS7.0中只要将应用程序配置成经典模式,代码基本不用修改就可以正常运行。集成模式是一种统
一的请求处理管道,它将ASP.NET请求管道与IIS核心管道组合在一起,这种模式能够提供更好的性能,能够实现配置和管理的模块化,而且
增加了使用托管代码模块扩展IIS时的灵活性。如果老的Web应用程序运行于IIS7.0的集成模式下,可能需要对应用程序的web.config文件进
行修改,尤其是使用了实现IHttpHandler接口的自定义模块的情况。IIS7.0在同一个服务器上能够同时支持两种模式的应用程序。
IIS6.0中ASP.NET MMC管理单元用于配置ASP.NET,7.0中ASP.NET应用程序的管理域IIS管理更加紧密的集成在一起,不存在单独的管理单
元,所有的IIS和ASP.NET配置都是使用IIS管理器完成的。IIS7.0配置信息基于.NET Framework配置系统,所以IIS7.0中运行的应用程序的
web.config文件同时包含web服务器和ASP.NET配置设置,例如可以再web.config文件中设置扩展名和文件的映射(IIS6.0中必须在IIS中进行
配置)。
web.config文件的变化
system.webServer节指定了应用于web应用程序的IIS7.0设置,其父节点是configuration,该节点中可以设置的内容包括:
• 当请求未包含指定资源时,Web服务器返回给客户端的默认文档(defaultDocument);
• 响应的压缩设置(httpCompression)
• 自定义头部(httpProtocol节的customHeaders)
• 模块(modules)
• 处理程序(handlers)
其中的一些设置仅适用于集成模式,而不适用于经典模式,如经典模式下运行的应用程序则忽略web.config的system.WebServer节中指
定的所有托管代码模块和处理程序,这种模式下web应用程序应该在syste.web节的httpModules和httpHandlers中定义模块和处理程序。
将 Web 应用程序迁移到集成模式
不包含自定义模块或处理程序的 Web 应用程序通常无需更改即可在 IIS 7.0 集成模式下正常工作。对于依赖于自定义模块或处理程序
的 Web 应用程序,需要执行以下步骤来使其能够在集成模式下运行:
• 使用本主题稍后的将 Web Config 文件迁移到集成模式部分中描述的方法之一,在 Web.config 文件的 system.webServer 节中注
册自定义模块和处理程序。
• 仅在自定义模块的 Init 方法中定义 HttpApplication 请求管道事件(如 BeginRequest 和 EndRequest)的事件处理程序。
• 请确保您已解决 Upgrading ASP.NET Applications to IIS 7.0: Differences between IIS 7.0 Integrated Mode and Classic
mode(将 ASP.NET 应用程序升级到 IIS 7.0:IIS 7.0 集成模式和经典模式之间的区别)的“Known Differences Between Integrated
Mode and Classic Mode”(集成模式和经典模式之间的已知区别)部分中讨论的问题。
实现 IHttpModule 接口的模块被称为托管代码模块,因为它们是使用 .NET Framework 生成的。可以在服务器级别或应用程序级别注册
托管代码模块。本机代码模块是仅在服务器级别注册的 DLL(非托管代码)。在集成模式下,将以托管模块的形式实现核心 ASP.NET 功能,
例如会话状态和 Forms 身份验证。
在将应用程序从经典模式迁移到集成模式时,可以保留经典模式下的自定义模块和处理程序注册,也可以将这些注册移除。如果不移除经典
模式下使用的 httpModules 和 httpHandlers 注册,则必须将 validation 元素的 validateIntegratedModeConfiguration 属性设置为
false 以避免错误。validation 元素是 system.webServer 元素的子元素。有关更多信息,请参见 ASP.NET Integration with IIS 7.0(
将 ASP.NET 与 IIS 7.0 集成)中的“Disabling the migration message”(禁用迁移消息)部分。
迁移 Web.config 文件以便在集成模式下使用
如果模块或处理程序是在应用程序级别定义的,则不会自动调用该模块或处理程序。这涉及符合以下条件的模块或处理程序:在 Bin 文
件夹下的程序集中定义;在 App_Code 文件夹下作为源代码定义;没有在 Web.config 文件的 system.webServer 节中注册和定义。为了使
模块或处理程序能够参与集成模式请求管道,必须使用下列方法之一注册该模块或处理程序:
• 直接编辑 Web.config 文件,并且将 modules 或 handlers 元素添加到 system.webServer 元素中。请注意,与经典模式相比,元
素名称是不同的:modules 和 handlers 分别对应于经典模式下的 httpModules 和 httpHandlers。
• 使用 IIS 管理器配置模块或处理程序。有关更多信息,请参见 Configuring Handler Mappings in IIS 7.0(在 IIS 7.0 中配置
处理程序映射)和 Configuring Modules in IIS 7.0(在 IIS 7.0 中配置模块)。
• 使用 IIS 7.0 命令行工具 (Appcmd.exe)。有关更多信息,请参见 Configure Settings for a Site, Application, Virtual
Directory or URL by Using Appcmd.exe(使用 Appcmd.exe 配置站点、应用程序、虚拟目录或 URL 的设置)。
使用集成模式的类和属性
在 IIS 7.0 集成模式以及 .NET Framework 3.0 版或更高版本中使用应用程序时,可以使用下面这些在经典模式下不可用的类和成员:
• HttpResponse 对象的 SubStatusCode 属性,使用它可以设置在配置了失败请求跟踪的情况下有用的代码。有关更多信息,请参见
Troubleshooting Failed Requests Using Failed Request Tracing in IIS 7.0(使用 IIS 7.0 中的跟踪功能解决请求失败的问题)。
• HttpResponse 对象的 Headers 属性,使用它可以访问响应头。
• HttpContext 对象的 IsPostNotification 和 CurrentNotification 属性,在提供 HttpApplication 事件的处理程序时可以使用
它们。
• HttpRequest 对象的 Headers 和 ServerVariables 属性,它们支持写功能。
IIS 7.0下载(微软Web服务器组件IIS 7.0):http://download.microsoft.com/download/1/0/d/10da04bb-4e82-485a-abb3-
94feff40a7b3/NETShow56_300.EXE
IIS 7.0的集成模式和经典模式的更多相关文章
- 在 IIS 7.5 中,应用程序池有两种运行模式:集成模式和经典模式。
应用程序池模式会影响服务器处理托管代码请求的方式. 如果托管应用程序在采用集成模式的应用程序池中运行,服务器将使用 IIS 和 ASP.NET 的集成请求处理管道来处理请求. 如果托管应用程序在采用经 ...
- [转帖]IIS7.5应用程序池集成模式和经典模式的区别介绍
IIS7.5应用程序池集成模式和经典模式的区别介绍 之前转帖过一个 但是感觉不如这个说的细: https://www.jb51.net/article/31010.htm 关注脚本之家微信公众号(jb ...
- 【IIS】IIS中同时满足集成模式和经典模式
手里有一个项目--系统设置(主要功能是对系统一些字典表的设置.权限管理等功能).在VS上运行没有任何问题.可是发布到IIS上之后,报黄页. 发布后程序运行环境为: windows 7 32位 IIS为 ...
- IIS7.5应用程序池集成模式和经典模式的区别介绍
IIS7.5应用程序池集成模式和经典模式的区别介绍 作者: 字体:[增加 减小] 类型:转载 时间:2012-08-07 由于最近公司服务器上需要将iis的应用程序池全部都升级到4.0的框架,当 ...
- ASP.NET运行时详解 集成模式和经典模式
遗留问题 在<ASP.NET运行时详解 生命周期入口分析>中遗留两个问题,包括Application的InitInternal方法执行细节.IIS6和II7经典模式请求管道管理类Appli ...
- [转帖] IIS经典模式和集成模式的区别
在 IIS 7.0 中,应用程序池有两种运行模式:集成模式和经典模式. https://blog.csdn.net/hongwei_23/article/details/44300923 这里面添加一 ...
- iis7.5 应用程序池 经典模式和集成模式的区别
在 IIS 7.5 中,应用程序池有两种运行模式:集成模式和经典模式. 应用程序池模式会影响服务器处理托管代码请求的方式. 如果托管应用程序在采用集成模式的应用程序池中运行,服务器将使用 IIS 和 ...
- IIS经典模式和集成模式在管道模型中的不同
问题: 有时候我们配置IIS后可能运行提示以下错误: HTTP 错误 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置. 其中由 ...
- IIS经典模式与集成模式
在IIS7.0中Web应用程序有两种配置形式:经典和集成 经典模式 经典模式是为了与之前的版本兼容,使用ISAPI扩展来调用ASP.NET运行库,原先运行于IIS6.0下的Web应用程序迁移到IIS7 ...
随机推荐
- C++中数组声名后不初始化,数组里的值都是0吗?
这得看数组的申明情况: 1.全局/静态数组 如果申明的是全局/静态数组,系统会把数组的内容自动初始化为0. 2.局部数组 如果申明的是局部数组,数组的内容会是随机的,不一定是0.如函数内声明: int ...
- 基础模块 网络连接检查 js
//无对象则加载 if (typeof Base == "undefined") Base = function() {} // 获取时间对象的基本方法 Base.prototyp ...
- .NET:bin 与 obj,Debug 与 Release ,区别与选择
bin 与 obj bin 目录:用来存放编译的结果. ( bin是二进制binrary的英文缩写,因为最初C编译的程序文件都是二进制文件 ) 编译的结果,有 Debug 和 Release 两个版本 ...
- 修改host文件——mac
打开终端 在终端terminal中输入sudo vi/etc/hosts sudo与vi之间有一个空格 上一步输入完成之后按回车键,如果当前用户账号有密码,则在按完之后会提示输入密码,此时输入当前账户 ...
- linux安装nginx,遇坑解决
1.nginx官网下载tar包,解压linux下: 2.进入解压文件夹,执行./configure: 3.报错,原因没有安装nginx相关依赖,如gcc环境,PCRE依赖库 ,zlib 依赖库 ,Op ...
- Python—列表操作
列表 列表的使用: 列表是可变数据类型,因此列表的方法,都是直接修改列表原始值 list = ["panda","chimpanzee","zebra ...
- Java--- Ajax异步验证用户名是否存在
今天复习了一下 Ajax异步验证用户名是否存在,在下面我写三种,一般开发时候都用第三种 jQuery和Ajax结合的形式,下面就介绍三种,具体说明代码里就有啦,废话不多说,直接上代码: 第一种方式: ...
- es6新增 set
Set 基本用法 ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set本身是一个构造函数,用来生成Set数据结构. var s = new Set(); [2, ...
- Nginx 单个进程允许的最大连接数
(1) 控制 Nginx 单个进程允许的最大连接数的参数为 worker_connections ,这个参数要根据服务器性能和内存使用量来调整 (2) 进程的最大连接数受 Linux 系统进程的最大打 ...
- Cordova使用极光推送的方法
1.在极光推送官网注册账号.应用,注意注册的包名要和app的包名一致 2.添加插件 cordova plugin add jpush-phonegap-plugin --variable APP_KE ...