公司的一个项目,环境为: .Net 4.0 + MVC3,部署在 Windows Server 2003R2 IIS6.0上面运行正常,迁移到新服务器 Windows Server 2008R2,部署在 IIS7.0上, 应用程序池中,托管管道模式中选中了“集成”模式,如下图:

其他配置如下:

配置完成后,访问出错报错,

最后检查出了原因:该项目中的 web.config 配置文件不适合 IIS7.0。

于是将应用程序池的管道模式选择为“经典”模式

再次访问一切正常。

  问题的根本原因是 IIS7.0 的机制已经发生改变,不再与 IIS6.0 一样,但是兼容 IIS6.0。

IIS7.0 对配置文件进行了一些修改,Web 开发人员可以使用这些修改内容。例如,<system.webServer> 节就是这样一项修改,

无论是经典模式还是集成模式都可以识别<system.webServer>节,同时,<system.webServer> 节既可以在 applicationHost.config 文件中设置,也可以在 web.config 文件中设置。

<system.webServer>节既可以控制静态页面,也可以控制动态页面。即使在经典模式中,<system.webServer>节也具有重要作用,它可以帮助Web开发人员在web.config文件中设置不同的IIS配置。

  在集成模式中,HTTP模块和HTTP处理程序不再定义于<system.web>中,而是定义于<system.webServer>中。如果在集成模式中运行一个包括了HTTP模块或HTTP处理程序的web.config文件,那么将会发生失效。幸运的是,微软公司已经详细规定了一个编号为500.22的错误信息,这个错误信息说明了如何一步步地迁移web.config文件。

利用AppCmd.exe工具,可以轻而易举地完成文件的迁移工作。为了在Default Web Site上迁移web.config文件,可以执行以下AppCmd.exe命令:

  1. AppCmd.exe migrate config "Default Web Site/"

下面是一个web.config文件的例子,这个例子可以在IIS 6.0的经典模式下工作:

 <?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<httpModules>
<add type="classname, assemblyname"
name="modulename" />
</httpModules>
</system.web>
</configuration>

AppCmd.exe migrate config命令运行结束后,web.config文件将被更新为以下内容:

 <?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<httpModules>
<add type="classname,assemblyname"
name="modulename" />
</httpModules>
</system.web>
<system.webServer>
<modules>
<add name="modulename"
type="classname, assemblyname"
preCondition="managedHandler" />
</modules>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>

</configuration>

注意,web.config文件中仍然保留了httpModules节,其目的在于向后兼容,但是,在system.webServer中,modules节则处于优先的地位。

validateIntegratedMode Configuration属性可以确保IIS不会因为存在遗留的<httpModules>节而产生问题。

集成管道模式是默认的管道模式,具有一些比较重要的优势。我们需要做的就是迁移定义了HTTP处理程序和HTTP模块的所有web.config文件,从而确保其能够在IIS 7.0下正常工作。

IIS7部署报错 500.22错误 检查到这集成托管模式下不使用的ASP.NET配置的更多相关文章

  1. IIS发布网站 报错500.19 错误解决过程记录

    首先先报上我的环境 WindowsServer 2012 IIS 8.5 网站是FrameWork 4.0 发布网站后浏览,报错信息如下: 解决过程记录如下: 1.看到这个问题首先想到的是权限问题,设 ...

  2. IIS7部署网站出现500.19错误(权限不足)的解决方案

    错误摘要 HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 详细错误信息 模块 IIS Web Core 通知 未知 处理 ...

  3. 打开nginx配置的站点报错500

    打开站点报错500的原因 有很多,这里只说明一点:nginx 的fastcgi.conf配置引起的问题 环境说明 1 站点目录结构 wwwroot website public application ...

  4. 部署到IIS报错:HTTP错误500.19,错误代码0x800700d

    title=部署到IIS报错:HTTP错误500.19,错误代码0x800700d.   用vs直接运行网站没问题,部署到IIS就报错,由此可知应该是IIS中不支持网站相关配置. 查找发现在web.c ...

  5. Visual Studio 2013执行项目报错:HTTP 错误 500.22

    转至:http://www.codingwhy.com/410.html 具体报错 HTTP 错误 500.22 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ...

  6. ASP.NET程序从IIS6移植到IIS7时出现500.22错误

    最可能的原因:  •    此应用程序在 system.web/httpModules 节中定义配置.  可尝试的操作:  •    将配置迁移到 system.webServer/modules 节 ...

  7. ASP.NET程序从IIS6移植到IIS7时出现500.22错误(转)

    最可能的原因: •    此应用程序在 system.web/httpModules 节中定义配置. 可尝试的操作: •    将配置迁移到 system.webServer/modules 节.也可 ...

  8. maven项目检出后报错(包括编译报错和运行报错)的常见检查处理方式

    maven项目检出后报错(包括编译报错和运行报错)的常见检查处理方式: 1.更改项目的jdk为我们安装的jdk2.更改build配置里的 output folder 目录为 xxx项目名/target ...

  9. Web Server IIS7部署网站常遇到的错误及解决办法

    IIS7部署网站常遇到的错误及解决办法 经常遇到问题: 1.错误:403.14-Forbidden Web 服务器被配置为不列出此目录的内容及Login on failed for "IIS ...

随机推荐

  1. 常见的SQL调优(SQL Tuning)Tips

    建立适当的索引(参考<正确建立数据库索引的姿势>)   用UNION替换OR (适用于索引列)   用exist.not exist代替 in.not in   不要以字符格式声明数字(会 ...

  2. Redis Lua脚本调试

    从版本3.2开始,Redis包含一个完整的Lua调试器,可以用来使编写复杂Redis脚本的任务更加简单. 由于Redis 3.2仍处于测试阶段,请unstable从Github 下载Redis 的分支 ...

  3. Android:双击退出应用的实现

    1 需求效果 为了防止用户点击返回键就直接退出APP,通常会加入一个双击退出的要求. 如果用户在两秒之内重复点击了返回键,则执行退出操作:如果用户点击了一次返回键之后,超过两秒未再次点击,则不响应退出 ...

  4. dict-test

    #! -*- coding:utf-8 -*-"""键必须是唯一的,但值则不必len(dict) 计算字典元素个数,即键的总数str(dict) 输出字典,以可打印的字符 ...

  5. Oracle 之 外部表

    一.外部表概述 外部表只能在Oracle 9i 之后来使用.简单地说,外部表,是指不存在于数据库中的表. 通过向Oracle 提供描述外部表的元数据,我们可以把一个操作系统文件当成一个只读的数 据库表 ...

  6. Confluence 6 针对站点维护使用只读模式

    如果你需要对 Confluence 进行维护,但是 Confluence 还是在运行或者你计划将站点合并到一个新的站点,你可以将你的 Confluence 站点设置为只读模式来限制用户在你站点中可以使 ...

  7. 整合Flask中的目录结构

    一.SQLAlchemy-Utils 由于sqlalchemy中没有提供choice方法,所以借助SQLAlchemy-Utils组件提供的choice方法 import datetime from ...

  8. Nginx的核心功能及应用实战

    反向代理功能及配置: 反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给interne ...

  9. UEFI rootkit 工具LoJax可以感染电脑主板(mainboard)

    1.UEFI(Unified Extensible Firmware Interface)统一扩展接口,UEFI rootkit是以在UEFI中植入rootkit ,18年9月份ESET首次公开了境外 ...

  10. Python继承、方法重写

    继承 在编写类时,并不是每次都要从空白开始.当要编写的类和另一个已经存在的类之间存在一定的继承关系时,就可以通过继承来达到代码重用的目的,提高开发效率. class one(): "&quo ...