技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

三种方法解决:检测到在集成的托管管道模式下不适用的 ASP.NET 设置

作者:admin    时间:2024-4-9 2:10:39    浏览:

几天前配置一个IIS环境的网站时,出现500错误。根据错误提示,很快把问题解决了,现记录一下,希望能帮到遇到同样问题的网友。

问题描述

 HTTP 错误 500.24 检测到在集成的托管管道模式下不适用的 ASP.NET 设置
(点击图片放大)

应用程序“DEFAULT WEB SITE”中的服务器错误Internet Information Services 7.5
错误摘要
HTTP 错误 500.24 - Internal Server Error
检测到在集成的托管管道模式下不适用的 ASP.NET 设置。
详细错误信息
模块 ConfigurationValidationModule
通知 BeginRequest
处理程序 StaticFile
错误代码 0x80070032
请求的 URL ----------
物理路径 ---------
登录方法 尚未确定
登录用户 尚未确定
最可能的原因:

  • system.web/identity@impersonate 设置为 true。

可尝试的操作:

  • 如果应用程序支持它,则禁用客户端模拟。
  • 如果你确信可以忽略此错误,则可以通过将 system.webServer/validation@validateIntegratedModeConfiguration 设置为 false 来禁用它。
  • 使用经典 .NET 模式将此应用程序移到应用程序池 - 例如,%SystemRoot%\system32\inetsrv\appcmd set app "Default Web Site/" /applicationPool:"Classic .NET AppPool"

(可以将“Classic .NET AppPool”设置为在经典托管管道模式下运行的其他应用程序池的名称) 链接和更多信息如果你不清楚或无法使用前两个选项,则首选的做法是将此应用程序切换到经典模式。

解决方法

方法一

根据错误描述,“最可能的原因”是:system.web/identity@impersonate 设置为 true。那我就在网站配置文件web.config里把此设置的true改为false。结果,问题就解决了。

方法二

我试试在网站配置文件web.config里把方法一的设置语句删除,结果,问题也能解决。可见,system.web/identity@impersonate 的默认值为 false

方法三

如果不更改web.config配置文件,我们也可以把应用程序池的“托管管道模式”的“集成”改为“经典”。如下图:

 把托管管道模式由“集成”改为“经典”。

总结

上面就是此文所述问题的三种解决方法了。 

知识扩展:应用程序池的集成模式和经典模式

在管道中,应用程序池有两种运行模式:集成模式和经典模式。

应用程序池模式会影响服务器处理托管代码请求的方式。

如果托管应用程序在采用集成模式的应用程序池中运行,服务器将使用 IIS 和 ASP.NET 的集成请求处理管道来处理请求。

如果托管应用程序在采用经典模式的应用程序池中运行,服务器会继续通过 Aspnet_isapi.dll 路由托管代码请求,其处理请求的方式就像应用程序在 IIS 6.0 中运行一样。

经典模式

指的是与IIS 6或者之前版本保持兼容的一种模式,一个典型问题就是,在处理ASP.NET这种动态网站的时候,它是通过一个所谓的ISAPI程序,作为插件的方式来工作的。针对不同的动态应用程序(例如ASP,PHP等),会需要不同的ISAPI。

集成模式

在IIS7之前,如IIS6或IIS5,请求处理管道分为两个:IIS请求处理管道和ASP.NET管道,若客户端请求静态资源则只有IIS管道进行处理,而ASP.NET管道不会处理该请求。从IIS7开始两个管道合二为一,称为集成管道。这种全新的模式,允许我们将ASP.NET更好地与IIS集成,甚至允许我们在ASP.NET中编写一些功能(例如Module)来改变IIS的行为(扩展)。集成的好处是,不再通过ISAPI的方式,提高了速度和稳定性。至于扩展,则可以使得我们对于IIS以及其他类型的请求有更多的控制。

标签: IIS7.5  IIS8.5  asp.net  
x
  • 站长推荐
/* 左侧显示文章内容目录 */