一个ASP。检测到在集成管理管道模式中不适用的NET设置

我安装了DotNetOpenAuth SDK-3.4.5.10201。vsix,我不能让它工作。它在本地工作(当我作为localhost运行时),但当我尝试发布它不工作。

我得到的IIS错误消息是:

错误摘要
. HTTP错误500.22 -内部服务器错误
一个ASP。

. NET设置已检测到在集成管理管道模式中不适用

和:

Module       ConfigurationValidationModule
Notification BeginRequest
Handler      StaticFile
Error Code   0x80070032

下面就如何解决这个问题给出一些建议:

你可以试试:

  • 将配置迁移到 system.webServer/modules部分。你 可以手动或使用AppCmd 从命令行-例如, %SystemRoot%\system32\inetsrv\appcmd migrate config "Default Web Site/"。 使用AppCmd迁移你的 应用程序将使其工作 整合模式,继续工作 在经典模式和之前

  • 如果你确定这样做是可以的 忽略这个错误,它可以被禁用 通过设置system.webServer/validation@validateIntegratedModeConfiguration 假的。< / p >

  • 或者切换应用 到经典模式应用程序池- 例如, %SystemRoot%\system32\inetsrv\appcmd set app "Default Web Site/" /applicationPool:"Classic .NET AppPool"。只有当你是这样做的时候 无法迁移应用程序。< br / > (设置“默认网站”;经典的。net应用程序池;到您的应用程序路径和应用程序池名称)

问题是我没有访问ISS服务器的权限,因为我不是它的所有者。有办法解决这个问题吗?

475142 次浏览

2nd选项是你想要的。

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

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

如果你仍然需要使用HTTP模块,你需要配置它(。NET 4.0框架):

<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="MyModule" type="[Namespace].[Class], [assembly]"/>
</modules>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>

我遇到了这个问题,但有不同的解决方案。它涉及到更新Control Panel>Administrative Tools>IIS Manager和将我的应用程序站点的托管管道从Integrated恢复到Classic

检查您的IIS身份验证是否有冲突。即启用匿名认证和ASP。NET模拟也可能导致错误。

添加<validation validateIntegratedModeConfiguration="false"/>可以解决这个问题,但并不适用于所有情况。我已经在这个问题上跑了几次,我希望帮助其他人不仅克服这个问题,而且理解它。(随着iis6逐渐成为神话和谣言,这一点变得越来越重要。)

背景:

这个问题和围绕它的困惑始于ASP的引入。NET 2.0和iis7。IIS 6过去和现在都只有一种管道模式,它相当于IIS 7+所称的“经典”模式。对于运行在iis7 +上的所有应用程序,第二种较新的、推荐的管道模式称为“集成”模式。

那么,有什么不同呢?关键的区别在于ASP。NET与IIS交互。

  • 经典模式仅限于ASP。NET管道不能与IIS管道交互。本质上是一个请求,如果IIS 6/Classic被告知,通过服务器配置,ASP。NET可以处理它,然后IIS将请求交给ASP。NET,然后继续。从一个例子可以看出这一点的重要性。如果我要授权访问静态图像文件,我将无法使用ASP。asp.net模块,因为IIS 6管道将处理这些请求本身和ASP。NET将永远不会看到这些请求,因为它们从未被传递。*另一方面,授权哪些用户可以访问一个。aspx页面,如请求Foo。aspx即使在iis6 /Classic中也是微不足道的,因为IIS总是把这些请求交给ASP。净管道。在经典模式ASP。NET不知道它没有被告知的东西,而且有很多iis6 /Classic可能没有告诉它。

  • 集成模式推荐使用。NET处理程序和模块可以直接与IIS管道交互。IIS管道不再简单地将请求传递给ASP。NET管道,现在它允许ASP。NET代码直接挂钩到IIS管道和所有命中它的请求。这意味着ASP。NET模块不仅可以观察到对静态图像文件的请求,还可以拦截这些请求,并通过拒绝访问、记录请求等采取行动。

克服错误:

  1. 如果您正在运行最初为IIS 6构建的旧应用程序,也许您将其移动到新服务器,那么以经典模式运行该应用程序的应用程序池可能绝对没有问题。去吧,你不必难过。
  2. 然后,也许你正在给你的应用程序整容,或者它一直运行得很好,直到你通过NuGet手动或其他方式安装了一个第三方库。在这种情况下,完全有可能httpHandlershttpModules被添加到system.web中。结果是你所看到的错误,因为validateIntegratedModeConfiguration默认为true。现在你有两个选择:

    1. system.web中移除httpHandlershttpModules元素。这有几个可能的结果:
      • 一切都很好,一个共同的结果;
      • 您的应用程序继续报错,可能有web。在你继承的父文件夹中的配置,考虑清理该网页。配置;
      • 你厌倦了删除NuGet包不断添加到system.web中的httpHandlershttpModules,嘿,做你需要做的。
      • 李< / ul > < / > 李< / ol > < / >
      • 如果这些选项不起作用或比它更麻烦,那么我不会告诉你不能将validateIntegratedModeConfiguration设置为false,但至少你知道你在做什么以及为什么它很重要。

    好读:

    当然,有很多方法可以把各种奇怪的东西放到ASP中。NET管道从iis6 /Classic通过像通配符的映射这样的咒语,如果你喜欢这样的事情。

这招对我很管用:

  1. 删除原创建的站点。
  2. 在IIS中重新创建站点
  3. 清洁解决方案
  4. 构建解决方案

我刚创建这个网站的时候好像出了问题。我讨厌类似于“重新启动机器,然后重新安装窗口”的解决方案,而不知道是什么导致了错误。但是,这对我很有效。简单快捷。希望它能帮助到其他人。

local的方法是错误的

image

我遇到了这个问题,受到@Jeremy Cook的回答的启发,我咬紧牙关,想知道到底是什么原因导致iis7集成模式不像我的web.config。以下是我的设想:

  1. Web API(版本4.0.030506.0即旧版本)
  2. net 4.0
  3. 属性路由3.5.6为Web API[剧透警告:它是这个家伙!]

我想在一个必须使用. net 4的项目中使用属性路由(不幸的是),因此不能使用Web API 2.2(需要. net 4.5)。善意的NuGet包在<system.web>部分下添加了这个部分:

<system.web>
<httpHandlers>
<add verb="*" path="routes.axd" type="AttributeRouting.Web.Logging.LogRoutesHandler, AttributeRouting.Web" />
</httpHandlers>
</system.web>

[我说的是善意的,因为旧版本的IIS需要这部分]

删除这个部分让我通过了HTTP 500.23!!

< >强简介: 我赞同杰里米的话,理解事情为什么不起作用而不仅仅是“掩盖症状”是很重要的。即使您必须掩盖症状,您也知道您在做什么(以及为什么):-)

在你的网里。配置确保这些键存在:

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

以及检查IIS站点认证中的Asp。网络印象=禁用

在我的情况下,我丢失了在web中引用的bin文件夹中的dll。配置文件。 检查一下你是否使用了web中的任何设置。配置但实际上没有dll.

谢谢

我花了几个小时来解决这个问题,因为我在这里找到的关于这个错误的所有设置都是一样的,但它仍然不工作。 问题是我在我的web服务中有一个文件夹,文件应该从这个文件夹发送到WinCE设备,在将该文件夹转换为经典应用程序后。

. netappool开始工作

以下步骤解决了我的问题:

使用管理员权限打开CMD提示符。

运行:iisreset.

希望这能有所帮助。

检查配置文件中是否存在这些键

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