iis7.5漏洞应用程序池集成模式和经典模式的区别介绍

您现在的位置: &
IIS7 应用程序池的 托管管道模式与集成模式小结
IIS7 应用程序池的 托管管道模式与集成模式小结
这些 ASP.NET 模块不只能处理 ASP.NET 网页程序,也能处理其他如 ASP 程序、PHP 程序或静态 HTML 网页,也因为 ASP.NET 的诸多功能已经成为 IIS 7 的一部份,因此 ASP 程序、PHP 程序或静态 HTML 网页等类型的要求,也能使用像是Forms认证(Forms Authentication)或输出缓存(Output Cache)等 ASP.NET 2.0 的功能(但须修改 IIS 7 的设定值)。也因为 IIS 7 允许自行以 ASP.NET API 开发并加入模块,因此 ASP.NET 网页开发人员将更容易扩充 IIS 7 和网站应用程序的功能,甚至能自行以 .NET 编写管理 IIS 7 的程序(例如以程控 IIS 7 以建置网站或虚拟目录)
  IIS 7 的执行架构图(集成托管信道模式下的架构) 小结 IIS5 到 IIS6 的改进,主要是 HTTP.sys 的改进。 IIS6 到 IIS7 的改进,主要是 ISAPI 的改进。
&&&主编推荐
&&&热门试卷
&&&最新视频
&&&热门阅读
&&&最新问答
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-页面导航:
→ 正文内容 集成模式和经典模式
IIS7.5应用程序池集成模式和经典模式的区别介绍
由于最近公司服务器上需要将iis的应用程序池全部都升级到4.0的框架,当然选择4.0就肯定使用集成模式部署
升级过程中出现了比较多的问题,前面文章也提到过几个。这次就主要介绍下httpHandler 和 httpModule 在集成和经典模式下的区别。很多文件上传等都是需要使用到httpModule去实现。我今天就出现了NeatUpload在iis7.5下出现未将对象引用到设计实例的错误。所以用httpModule作为测试案例。 1.新建测试网站WebApplication,加入MyHttpModule类实现IHttpModule接口,主要目的是测试程序是否经过了HttpModule,经过的在页面输出HttpModule字符。
代码如下: public class MyHttpModule : IHttpModule { public void Dispose() { } public void Init(HttpApplication context) { context.BeginRequest += context_BeginR } protected void context_BeginRequest(object sender, EventArgs e) { var context = sender as HttpA context.Response.Clear(); context.Response.Write("HttpModule"); context.Response.End(); } }
2、2.在IIS7.5部署网站,首先使用经典模式应用程序池。在web.config的 &system.web& 的子节点&httpModules& 加入&add name="MyHttpModule" type="WebApplication.MyHttpModule, WebApplication"/&
代码如下: &httpHandlers& &remove verb="*" path="*.asmx"/& &add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF"/& &add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF"/& &add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF" validate="false"/& &/httpHandlers& &httpModules& &add name="MyHttpModule" type="WebApplication.MyHttpModule, WebApplication"/& &add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF"/& &/httpModules& 访问网站可以发现页面输出如下,说明程序经过了HttpModule
直接切换应用程序池成集成模式会发现页面输出为空。证明程序没有经过HttpModule。那在集成模式下HttpModule如何才能执行呢? 之前部署URLRewriter的时候查资料只知道需要&&system.webServer&&&modules&注册HttpModule。仔细查看配置文件会发现有一段如下英文.意思大概就是iis7版本的设置。之前版本无需设置。&!-- The system.webServer section is required for running ASP.NET AJAX under Internet Information Services 7.0. It is not necessary for previous version of IIS. --& 这样就大概明白意思是iis7.0之后有部分web配置移动到system.webServer中。查阅相关得到答案确实如此 详细资料见 /buaaboyi/archive//1939903.html 于是在&system.webServer& &modules&中加入配置如下,刷新页面,页面能够输出字符HttpModule,证明成功了。
代码如下: &system.webServer& &validation validateIntegratedModeConfiguration="false"/& &modules& &remove name="ScriptModule" /& &add name="MyHttpModule" type="WebApplication.MyHttpModule, WebApplication"/& &add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF"/& &/modules&
由于在升级过程成有一个站点出现 HTTP 错误 500.22 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置
当时在比较急的情况下就直接删除了 &system.web& 的子节点&httpModules& 程序正常运行。后面通过仔细和正常的站点对比是发现是缺少 &validation validateIntegratedModeConfiguration="false"/& 这个导致,这个主要作用是设置不检测 &system.web&中的配置 经过这今天的折腾终于是对iis7.5上的部署有了一定了解了。
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行
12345678910检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为【经典】模式)。

我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误:
  HTTP 错误 500.23 - Internal Server Error
  检测到在集成的托管管道模式下不适用的 ASP.NET 设置。
  为什么会出现以上错误?
  在IIS7的应用程序池有两种模式,一种是“集成模式”,一种是“经典模式”。
  经典模式 则是我们以前习惯的IIS 6 的方式。
  如果使用集成模式,那么对自定义的httpModules 和 httpHandlers 就要修改配置文件,需要将他们转移到&modules&和&hanlders&节里去。
  两种解决方法:
  第一种方法:配置应用程序池
  在IIS7上配置应用程序池,并且将程序池的模式改为“经典”,之后一切正常。如图:
在搜索引擎输入上面提示的错误消息,搜索到的结果几乎都是直接改为“经典”便浅尝辄止了。
但这样只是权宜之计,用了IIS7.x,但实际只发挥了6的功能,另外,在一些ASP.NET MVC程序中的效果也不好,所以,我们尝试以下解决方法:
第二种方法:修改web.config配置文件:
例如原先设置(你的环境中可能没有httpModules,httpHandlers节点)
&system.web&
............
&httpModules&
&add name=&MyModule& type=&MyApp.MyModule& /&
&/httpModules&
&httpHandlers&
&add path=&*.myh& verb=&GET& type=&MyApp.MyHandler& /&
&/httpHandlers&
&/system.web&
&在IIS7应用程序池为“集成模式”时,改为:
&system.web&
...........
&/system.web&
&system.webServer&
&add name=&MyModule& type=&MyApp.MyModule& /&
&/modules&
&handlers&
&add name=&MyHandler& path=&*.myh& verb=&GET& type=&MyApp.MyHandler& preCondition=&integratedMode& /&
&/handlers&
&/system.webServer&
&(如果你的web.config没有httpModules,httpHandlers节点,则直接在节点system.webServer中添加:
&validation validateIntegratedModeConfiguration=&false& /&
这样可以禁止验证集成模式,避免错误提示。
经典模式(classic mode)VS 集成模式(Integrated mode)
在经典模式下,IIS会用ISAPI扩展(ISAPI extension aspnet_isapi.dll)和 ISAPI过滤器(ISAPI filter aspnet_filter.dll)来调用ASP.NET运行库来处理请求。如果使用经典模式的话,服务器会用两种管道来处理请求一个负责源代码,另外一个负责托管代码。在这种模式下,应用程序不能充分使用IIS7.X提供的服务。
集成模式是一种统一的请求处理管道,它将ASP.NET请求管道与IIS核心管道组合在一起。在集成模式下,ASP.NET从IIS插件(IIS extension)的角色进入了IIS的核心去监测每个请求和操作。在集成模式下,ASP.NET能更有效的在IIS下运行,并且可以有效的提高网站的性能。 有些在IIS6开发的代码需要运行于经典模式,因为在集成模式下会出现错误信息。
要想更有效的使用IIS7提供的服务, 建议将网站放在集成模式下,然后根据错误信息的提示解决那个问题。

* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:112089次
积分:1953
积分:1953
排名:第9325名
原创:63篇
转载:15篇
译文:13篇
评论:33条
(1)(1)(3)(3)(1)(1)(3)(1)(2)(2)(2)(1)(5)(9)(4)(9)(5)(3)(7)(2)(4)(5)(1)(1)(1)(1)(1)(1)(1)(7)(1)(1)(1)关于AspNetPager启用UrlPaging后iis7.5的程序池模式设置问题
[问题点数:100分]
关于AspNetPager启用UrlPaging后iis7.5的程序池模式设置问题
[问题点数:100分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2013年12月 .NET技术大版内专家分月排行榜第二2013年11月 .NET技术大版内专家分月排行榜第二2013年10月 .NET技术大版内专家分月排行榜第二2013年8月 .NET技术大版内专家分月排行榜第二2013年7月 .NET技术大版内专家分月排行榜第二
2013年9月 .NET技术大版内专家分月排行榜第三
2014年6月 .NET技术大版内专家分月排行榜第二2014年1月 .NET技术大版内专家分月排行榜第二
2014年2月 .NET技术大版内专家分月排行榜第三2013年4月 .NET技术大版内专家分月排行榜第三
2014年5月 企业软件大版内专家分月排行榜第一2013年2月 企业开发大版内专家分月排行榜第一
2015年1月 企业软件大版内专家分月排行榜第二2013年10月 企业软件大版内专家分月排行榜第二2013年5月 企业开发大版内专家分月排行榜第二2013年4月 企业开发大版内专家分月排行榜第二2013年3月 企业开发大版内专家分月排行榜第二
2014年5月 企业软件大版内专家分月排行榜第一2013年2月 企业开发大版内专家分月排行榜第一
2015年1月 企业软件大版内专家分月排行榜第二2013年10月 企业软件大版内专家分月排行榜第二2013年5月 企业开发大版内专家分月排行榜第二2013年4月 企业开发大版内专家分月排行榜第二2013年3月 企业开发大版内专家分月排行榜第二
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。正文内容加载中...
09:40 x.c 阅读(173) 评论(0)
摘要: WebApi Post提交报错 调试无法进入对应action函数
10:30 x.c 阅读(375) 评论(0)
摘要: 一次从安装Linux到部署MVC跨平台的经历,记录了遇到的各种问题
16:43 x.c 阅读(740) 评论(8)
摘要: 每个项目都需要使用,在很多项目中都出现一个aspx页面或者其他处理代码,我们可以尝试封装到公用类里面实现IHttpHandler,在使用的项目中直接引用公用dll后再在项目的配置文件中注册处理程序。默认实现IHttpHandler不支持Session需要实现。验证码的随机字符的Session在什么时候生成?
12:01 x.c 阅读(54) 评论(0)
摘要: 尼玛,SQL Server Management Studio 2012导出脚本怎么会没有判断存储过程是否存在呢? 蛋痛,每次启动数据库开发工具都弹一个窗口,每次都点击取消!坑爹,新建查询每次都要去选择数据库!
没有这样烦扰的绕道
17:07 x.c 阅读(571) 评论(3)
摘要: 作为一个程序员,上GitHub必然是很经常的一件事情。细心的同学会发现当我们在浏览项目源码的时候,进入文件夹后Url地址发生改变后,内容很快就加载好了。起初还以为是刷新了页面加载的,但刷新页面速度也快的离谱了吧。于是F12监控下网络请求,发现是进行了Ajax请求。很是神奇,Url地址发生改变不是会刷新页面吗(#号后面的除外啦)?什么情况?
17:27 x.c 阅读(2538) 评论(1)
摘要: Web程序通过异步把文件缓存成静态HTML页面时候有时候,有时候会缓存成功有时候缓存失败 why?
18:11 x.c 阅读(240) 评论(1)
摘要: 网上压缩css和js工具很多,但在我们的系统中总有特殊的地方。也许你会觉得用第三方的压缩工具很麻烦。我就遇到了这样问题,我不想在本地压缩,只想更新到服务器上去压缩,服务器压缩也不用备份之类的操作。于是我就想着自己实现压缩工具
09:55 x.c 阅读(1492) 评论(6)
摘要: 闲来无事整理电脑时候发现电脑程序菜单里面有个Microsoft Sync Framework,看到名字也知道是异步框架。但使用场景就不太清楚了。后面查阅了相关资料,知道比较典型的使用就是做文件同步了。
结果第二天就在公司遇到比较坑爹的客户需求,需要将一个网站的数据共享,而且数据量比较大,其中产品的图片就成了一个大问题了。如果修改程序会提高维护成功,而且不可能为一个客户去修改程序,所以只能考虑文件复制过去,添加产品上传图片后也要自动同步过去,最初考虑使用SecondCopy 但是要配置的数量太多,所以绝对用Microsoft Sync 去实现.同时对文件夹进行监控,如果有改变就启动同步。
11:13 x.c 阅读(457) 评论(1)
摘要: 由于最近公司服务器上需要将iis的应用程序池全部都升级到4.0的框架,当然选择4.0就肯定使用集成模式部署。升级过程中出现了比较多的问题,前面文章也提到过几个。这次就主要介绍下httpModule 在集成和经典模式下的区别。
21:02 x.c 阅读(4041) 评论(2)

我要回帖

更多关于 iis7.5 的文章

 

随机推荐