HTTP 错误 500.22 - 内部服务器错误(已检测到不适用于集成托管管道模式的 ASP.NET 设置。)

Posted

技术标签:

【中文标题】HTTP 错误 500.22 - 内部服务器错误(已检测到不适用于集成托管管道模式的 ASP.NET 设置。)【英文标题】:HTTP Error 500.22 - Internal Server Error (An ASP.NET setting has been detected that does not apply in Integrated managed pipeline mode.) 【发布时间】:2011-09-10 08:22:23 【问题描述】:

我在查看应用程序时收到此错误。

.Net framework 2.0、3.5 和 4 已安装,我使用的是 SQL 2008。谁能告诉我这个错误的解决方案是什么?

【问题讨论】:

【参考方案1】:

此问题是由您的网站设置的应用程序池设置中的管道模式引起的。

简单方法将应用程序池模式更改为启用经典管道的模式。 正确的方式 您的 web.config / web 应用需要更改以支持集成管道。通常这就像删除部分 web.config 一样简单。

简单的方法(不好的做法)将以下内容添加到您的 web.config。见http://www.iis.net/ConfigReference/system.webServer/validation

 <system.webServer>
     <validation validateIntegratedModeConfiguration="false" />
 </system.webServer>

如果可能,最好的办法是更改应用程序以支持集成管道。 IIS6 和 IIS7.x 之间存在许多会导致此错误的更改。您可以在http://learn.iis.net/page.aspx/381/aspnet-20-breaking-changes-on-iis-70/ 找到有关这些更改的详细信息。

如果您无法做到这一点,则需要更改应用程序池,这可能更难执行,具体取决于您对 Web 服务器的可用性。

转到网络服务器 打开 IIS 管理器 导航到您的网站 单击右侧操作窗格中的高级设置 在应用程序池下,将其更改为已启用经典的应用程序池。

查看http://technet.microsoft.com/en-us/library/cc731755(WS.10).aspx了解更改应用程序池的详细信息

如果您需要使用经典管道创建应用程序池,请查看http://technet.microsoft.com/en-us/library/cc731784(WS.10).aspx

如果您无权访问服务器来进行此更改,则需要通过您的托管服务器执行此操作并联系他们寻求帮助。

欢迎提问。

【讨论】:

以编程方式 如何知道应用程序池模式是经典还是集成 @Kiquenet 查看system.web.httpruntime.usingintegratedpipeline 并在运行时检查该值 感谢您的建议。我对点网很陌生。我通过上面描述的简单方法解决了我的问题。再次感谢@Kirk【参考方案2】:

在您的 web.config 中,确保这些键存在:

<configuration>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
    </system.webServer>
</configuration>

【讨论】:

【参考方案3】:

我将 web.config 文件更改为以两种形式使用 HTTPMODULE:

IIS:6

<httpModules>
    <add name="Module" type="app.Module,app"/>
</httpModules>

IIS:7.5

<system.webServer>
    <modules>
       <add name="Module" type="app.Module,app"/>
    </modules>
</system.webServer>

【讨论】:

【参考方案4】:

使用 VS2013 .net 4.5

我也有同样的问题。

错误消息页面上的“最可能的原因”部分提供了最大的帮助。为了我。它说“这个应用程序在 system.web/httpModules 部分定义配置。”然后在“您可以尝试的事情”部分中显示“将配置迁移到 system.webServer/modules 部分”。

<system.web>
      <httpHandlers>
        <add type="DevExpress.Web.ASPxUploadProgressHttpHandler, DevExpress.Web.v15.1, Version=15.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" validate="false" />
        <add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v15.1, Version=15.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET" path="DX.ashx" validate="false" />
      </httpHandlers>
      <httpModules>
        <add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v15.1, Version=15.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
      </httpModules>
    </system.web>

进入 system.webServer 部分。

<system.webServer> 
    <handlers>
      <add type="DevExpress.Web.ASPxUploadProgressHttpHandler, DevExpress.Web.v15.1, Version=15.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" name="ASPxUploadProgressHandler" preCondition="integratedMode" />
      <add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v15.1, Version=15.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET" path="DX.ashx" name="ASPxHttpHandlerModule" preCondition="integratedMode" />
    </handlers>
    <modules>
      <add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v15.1, Version=15.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
    </modules>
</system.webServer>

【讨论】:

嗨,我有类似的问题,您是否将其从 节点中删除?并且只留在 节点 已经有一段时间了,但我确定我已将其从 节点中删除并将其粘贴到 节点中。很高兴能帮上忙! 其他任何使用它的人都应该注意,新标记需要在添加标签中指定名称。在我的情况下,需要删除 Validate = false 并且还必须关闭模拟。【参考方案5】:

这对我有用:

    删除最初创建的网站。 在 IIS 中重新创建站点 清洁解决方案 构建解决方案

当我最初创建该网站时,似乎有些事情发生了。我讨厌类似于“重新启动计算机,然后重新安装 Windows”的解决方案,但不知道是什么导致了错误。但是,这对我有用。快速简单。希望对其他人有所帮助。

【讨论】:

【参考方案6】:

IIS 7 Win 7 Enterprise Pack 也有类似的问题。我已经更改了@Kirk 回答中的应用程序池:

将应用程序池模式更改为启用经典管道的模式“。但我没有运气。

再添加一个步骤对我有用。 我已将我网站的 .NET Frameworkis v2.0 更改为 .NET Frameworkis v4.0. in ApplicationPool

【讨论】:

【参考方案7】:

我个人在将 IIS6 网站迁移到 IIS7 时遇到了这个问题,为了解决这个问题,我使用了这个命令行:%windir%\System32\inetsrv\appcmd migrate config "MyWebSite\" 确保备份您的 web.config

【讨论】:

【参考方案8】:

将应用程序池设置为经典 .NET appool 并确保 Classic .Net apppool 在经典托管管道线上工作。

【讨论】:

以上是关于HTTP 错误 500.22 - 内部服务器错误(已检测到不适用于集成托管管道模式的 ASP.NET 设置。)的主要内容,如果未能解决你的问题,请参考以下文章

试图实施 ELMAH - 不断收到 IIS HTTP 500.22 错误

HTTP 错误 500.22 - Internal Server Error

HTTP 错误 500.22 - Internal Server Error

IISExpress VS.Net 2015 - HTTP 错误 500.22 - 检测到不适用于集成托管管道模式的 ASP.NET 设置

ASP.NET 网站迁移 HTTP 错误 500.22 - Internal Server Error 检测到在集成的托管管道模式下不适用

HTTP错误500.22 检测到在集成的托管管道模式下不适用的ASP.NET设置