三种方法解决:检测到在集成的托管管道模式下不适用的 ASP.NET 设置
作者:admin 时间:2024-4-9 2:10:39 浏览:几天前配置一个IIS环境的网站时,出现500错误。根据错误提示,很快把问题解决了,现记录一下,希望能帮到遇到同样问题的网友。
问题描述
应用程序“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以及其他类型的请求有更多的控制。
- 站长推荐