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

最可能的原因: 
•    此应用程序在 system.web/httpModules 节中定义配置。 
可尝试的操作: 
•    将配置迁移到 system.webServer/modules 节。也可以手动这样做,或通过在命令行中使用 AppCmd 来这样做 - 例如,%SystemRoot%\system32\inetsrv\appcmd migrate config "Default Web Site/"。使用 AppCmd 迁移应用程序将使它能够在集成模式下工作,并能继续在经典模式下和以前版本的 IIS 上工作。 
•    如果您确信可以忽略此错误,则可以通过将 system.webServer/[email protected] 设置为 false 来禁用它。 
•    也可以将应用程序切换到经典模式应用程序池 - 例如,%SystemRoot%\system32\inetsrv\appcmd set app "Default Web Site/" /applicationPool:"Classic .NET AppPool"。只有在无法迁移应用程序时才这样做。 
(将“Default Web Site”和“Classic .NET AppPool”设置为您的应用程序路径及应用程序池名称) 
链接和更多信息集成模式是在 IIS 7.0 上运行 ASP.NET 应用程序的首选模式

{ IIS 的应用程序池根据托管管道模式分了两种类型:集成和经典两种

集成 .NET 模式下,应用程序不应在
<system.web>/<httpModules> 配置节中指定 ASP.NET 模块组件,而应使用
<system.webServer>/<modules> 配置节来加载 ASP.NET 模块组件。

经典.NET 模式 则是我们以前习惯的IIS 6 的方式,没有上述限制。}

解决方法:

方法1在IIS7上配置应用程序池.

方法2:在IIS7添加我们的模块(modules)

参考:http://aabs.wordpress.com/2007/11/16/ihttpmodule-not-running-after-conversion-to-iis-7-and-net-35/

方法3:修改web.config

再细了解:

IIS7的Application
Pools有两种mode,一种是Integrated,一种是classic。如果使用Integrated模式,那么对自定义的
httpModules和httpHandlers就要修改配置文件了,需要将他们转移到<modules>
和<hanlders>节里去。

IIS7的两种模式和IIS6有什么区别?

IIS7.0 Integrated mode:asp.net
的modules和handlers从<system.webServer>下的<modules>
和<handlers>里读取,以前的<system.web>下的<httpModules>
和<httpHandlers>配置节会被忽略,如果设置禁止验证(disabled validation),是不会产生错误的。

IIS7.0 Classic mode:与以上情况是相反的,<modules>和<handlers>会被忽略。

IIS6.0 :这个大家都不陌生了。

如果做一个可以在IIS6和IIS7的两种mode下都可以运行的配置?validateIntegratedModeConfiguration=“false”是做什么用的?有需要的朋友可以在这里查看详情。

其次,从iis6迁移到iis7上后,有些url rewrite功能可能就不好用了,下面这篇文章讲述了一个hack方法,有效的控制了staticFile handler的职责,实现了像iis6那样的工作方式。

示例代码:

<system.web>

<!-- Modules for IIS 6.0 and IIS 7.0 Classic mode -->

<httpModules>

<add name="MagicAjaxModule" type="MagicAjax.MagicAjaxModule, MagicAjax"/>

</httpModules>

<!-- Handlers for IIS 6.0 and IIS 7.0 Classic mode -->

<httpHandlers>

<addpath="*.myh"verb="GET"type="MyApp.MyHandler" />

</httpHandlers>

</system.web>

<system.webServer>

<!-- Modules for IIS 7.0 Integrated mode -->

<modules>

<add name="MagicAjaxModule" type="MagicAjax.MagicAjaxModule, MagicAjax"/>

</modules>

<!-- Handlers for IIS 7.0 Integrated mode -->

<handlers>

<addname="MyHandler"path="*.myh"verb="GET"type="MyApp.MyHandler"preCondition="integratedMode" />

</handlers>

<!-- Disable detection of IIS 6.0 / Classic mode ASP.NET configuration -->

<validation validateIntegratedModeConfiguration="false" />

</system.webServer>

ASP.NET程序从IIS6移植到IIS7时出现500.22错误,布布扣,bubuko.com

时间: 2024-10-19 22:28:15

ASP.NET程序从IIS6移植到IIS7时出现500.22错误的相关文章

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

2014-08-08 公司的一个项目,环境为: .Net 4.0 + MVC3,部署在Windows Server 2003R2 IIS6.0上面运行正常, 迁移到新服务器Windows Server 2008R2,部署在 IIS7.0上, 应用程序池中,托管管道模式中选中了“集成”模式,如下图: 其他配置如下: 配置完成后,访问出错报错, 最后检查出了原因:该项目中的web.config配置文件不适合IIS7.0. 于是将应用程序池的管道模式选择为“经典”模式 再次访问一切正常. 问题的根本原

IIS5.1、IIS6.0、IIS7.5中安装配置MVC 3

本文主要介绍在IIS5.1.IIS6.0.IIS7.5中安装配置MVC 3的具体办法! 正文: IIS5.1 1. 安装Microsoft .net FrameWork 4.0安装包; 2. 安装ASP.NET MVC 3; 3. 在IIS中发布网站,创建虚拟目录,ASP.NET版本选择4.0.30196: 4. 添加MVC的解析: 右击IIS中的虚拟目录选择“属性”-“虚拟目录”-“配置”-“映射”-“添加”,配置如下: 可执行文件:C:\WINDOWS\Microsoft.NET\Frame

ASP.NET 程序发布详细过程

前言 ASP.NET网站的发布,无论是初学者还是高手,在程序的发布过程中或多或少会存在一些问题,譬如VS发布ASP.NET程序失败.IIS安装失败.IIS发布失败.局域网内不能访问 配置文件错误.权限不足等一系列问题,结合我带领的500技术团队反应的各种问题,我今天花点时间总结一下,方便大家,共同学习,共同进步 为了后文的深入详细分析,我写了一个小Demo,代码附上.本次基于VS2013,OS为WIN10,IIS7等环境讲解.(其他操作系统如WIN7原理也类似,但有细微差别) 1.解决方案整体概

【ASP】Window2008站点安全设置,IIS7/IIS7.5中目录执行权限的设置方法

最近帮一个朋友管理Window 2008服务器,发现有个站点是用asp写的,更可怕的是还有传说中的“上传漏洞”,在上传文件夹中有好多的可执行的asp.php文件,算是shell后门脚本吧.怎么处理这个漏洞问题???最快捷的方法就是让这些文件“不可执行”! 下面是百度出来的解决方案: 我们在建站的时候,通常有些目录必须给写入权限,这个时候这些目录就很可能 被人写入脚本文件,为了将安全性维护得更好,我们可以关闭这些有写入权限的目录的脚本执行权限.IIS6的时候,我们很容易找到关闭的地方,而IIS7时

asp.net程序发布详解

本文转载自Alan_beijing的博客ASP.NET 程序发布详细过程.内容进行了部分更改. ASP.NET网站的发布,无论是初学者还是高手,在程序的发布过程中或多或少会存在一些问题,譬如VS发布ASP.NET程序失败.IIS安装失败.IIS发布失败.局域网内不能访. 配置文件错误.权限不足等一系列问题,结合我带领的500多人的技术团队反应的各种问题,我今天花点时间总结一下,方便大家,共同学习,共同进步. 为了后文的深入详细分析,我写了一个小Demo,代码附上.本次基于VS2013,OS为WI

ASP.NET程序开发范例宝典

在整理资料时发现一些非常有用的资料源码尤其是初学者,大部分是平时用到的知识点,可以参考其实现方法,分享给大家学习,但请不要用于商业用途. 如果对你有用请多多推荐给其他人分享. 点击对应章节标题下载本章节下所有源代码. 目录: 第2章 HTML开发与实践 15 2.1 框架的使用 16 实例009 使用FrameSet框架布局聊天室 16 实例010 使用IFrame框架布局企业管理系统 17 2.2 滚屏的实现 18 实例011 滚动显示博客公告 18 实例012 滚屏效果并实现超级链接 20

在ASP.NET程序中用程序动态向&lt;head&gt;便签里添加&lt;meta&gt;标签

在使用ASP.NET框架开发: 若要在Html网页中加入<meta>设置,但想通过程序动态加入: 1.如果是ASP.NET4.0以前版本: 使用HtmlMeta类加入<meta>设置: //首先我们应该创立HtmlMeta类实体(命名空间:System.Web.UI.HtmlControls) HtmlMeta meta1=new HtmlMeta(); meta1.Name="keyword"; meta1.Content="ASP.NET,jQue

VS2010部署Asp.net程序到本地IIS 7

    部署自己的网站到本地IIS 当你做一个网站,你想要在局域网访问的时候,你就可以部署到自己的IIS中然后他们通过 ip 去访问.下面就是怎么部署Asp.net 的网站怎么到本地IIS 上的. 1. 首先保证程序重新生成没有任何问题. 2. 在本地计算机创建一个文件夹 命名 PublishWeb. 3. 在Web上右击发布程序到路径 PublishWeb文件中如图 . 4. 在运行中输入 control -> 程序和功能 -> 启用和关闭Windows 功能 -> IIS 信息服务服

引用 运行asp.net程序时候,编译器错误消息: CS0016: 未能写入输出文件“c:\WINDOWS\Microsoft.NET\Fra

引用 运行asp.net程序时候,编译器错误消息: CS0016: 未能写入输出文件“c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\asaa\6afc8e18\e1c3edea\App_Web_masterpage.master.fdf7a39c.r2drwb6q.dll”--“拒绝访问. ” 运行asp.net程序时候,编译器错误消息: CS0016: 未能写入输出文件“c:\WINDOWS\Micr