Se ha detectado una configuración de ASP.NET que no se aplica en el modo de canalización administrado integrado

Instalé DotNetOpenAuth SDK-3.4.5.10201.vsix y no puedo hacerlo funcionar. Funciona localmente (cuando lo ejecuto como localhost) pero cuando intento publicarlo no funciona.

El mensaje de error de IIS que recibo es

Resumen de errores
HTTP Error 500.22 - Error interno del servidor
Se ha detectado una configuración de ASP.NET que no se aplica en el modo de canalización administrado integrado.

Y DE

Module       ConfigurationValidationModule  
Notification BeginRequest  
Handler      StaticFile  
Error Code   0x80070032  

luego hay algunas sugerencias sobre cómo resolver el problema:

Cosas que puedes probar:

  • Migre la configuración al system.webServer/modules sección. Puede hacerlo manualmente o utilizando AppCmd ​​desde la línea de comando, por ejemplo, %SystemRoot%\system32\inetsrv\appcmd migrate config "Default Web Site/". Utilizando AppCmd migrar su aplicación permitirá que funcione en modo integrado y continuará funcionando en modo clásico y en versiones anteriores de IIS.

  • Si está seguro de que está bien ignorar este error, puede deshabilitarlo configurando system.webServer/validation@validateIntegratedModeConfiguration a falso

  • Alternativamente, cambie la aplicación a un grupo de aplicaciones del modo Clásico, por ejemplo, %SystemRoot%\system32\inetsrv\appcmd set app "Default Web Site/" /applicationPool:"Classic .NET AppPool". Solo haga esto si no puede migrar su aplicación.
    (Establezca "Sitio web predeterminado" y "Clásico .NET AppPool" en la ruta de la aplicación y el nombre del grupo de aplicaciones)

Pero el problema es que no tengo acceso al servidor ISS porque no soy el propietario del mismo. ¿Hay alguna forma de resolver esto?

preguntado el 17 de noviembre de 10 a las 19:11

12 Respuestas

Desafíond La opción es la que desea.

En su web.config, asegúrese de que existan estas claves:

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

Respondido el 02 de Septiembre de 14 a las 18:09

Esto realmente no debería afectar la seguridad de su aplicación. Simplemente apaga la advertencia que dice que tiene algunos valores de configuración que no se utilizarán. - David

Este no es un consejo demasiado sensato si tiene configuraciones que no se usarán, entonces debe eliminarlas. - Sef

@Seph, no estoy de acuerdo con que este no sea un buen consejo. Muchas instalaciones de NuGet (por ejemplo, DotLess) agregarán entradas a las secciones que se aplican al modo integrado y también duplicarán esa configuración para el modo no integrado. Se llama portabilidad y permite que su configuración funcione sin tener en cuenta de si está utilizando IIS7 / integrado o clásico. La única razón para dejar esta configuración de validación true es para que pueda dejar las ruedas de entrenamiento encendidas y hacer que IIS le grite cada vez que agregue una configuración que no funcionará en el modo integrado. Esto es para los inexpertos, pero se interpone. - kirk woll

Este tipo de configuración es molesto. @MS: hay una forma mejor. - yonexbat

Para aquellos que prefieren corregir errores en lugar de enmascarar síntomas, he publicado una respuesta alternativa. Con respecto a los paquetes NuGet, ¿por qué seguimos apuntando a IIS 6 / Classic? - jeremy cocinar

Adición <validation validateIntegratedModeConfiguration="false"/> aborda el síntoma, pero no es apropiado para todas las circunstancias. Habiendo resuelto este problema varias veces, espero ayudar a otros no solo a superar el problema, sino también a comprenderlo. (Lo que se vuelve cada vez más importante a medida que IIS 6 se convierte en mito y rumor).

Antecedentes:

Este problema y la confusión que lo rodea comenzó con la introducción de ASP.NET 2.0 e IIS 7. IIS 6 tenía y sigue teniendo solo un modo de canalización, y es equivalente a lo que IIS 7+ llama modo "clásico". El segundo modo de canalización, más nuevo y recomendado para todas las aplicaciones que se ejecutan en IIS 7+ se denomina modo "Integrado".

Entonces, ¿cuál es la diferencia? La diferencia clave es cómo ASP.NET interactúa con IIS.

  • Modo clásico está limitado a una canalización ASP.NET que no puede interactuar con la canalización IIS. Esencialmente, entra una solicitud y si se le ha dicho a IIS 6 / Classic, a través de la configuración del servidor, que ASP.NET puede manejarlo, IIS entrega la solicitud a ASP.NET y continúa. El significado de esto puede deducirse de un ejemplo. Si autorizara el acceso a archivos de imágenes estáticas, no podría hacerlo con un módulo ASP.NET porque la canalización de IIS 6 manejará esas solicitudes por sí misma y ASP.NET nunca verá esas solicitudes porque nunca se entregaron. . * Por otro lado, autorizar qué usuarios pueden acceder a una página .ASPX, como una solicitud de Foo.aspx, es trivial incluso en IIS 6 / Classic porque IIS siempre entrega esas solicitudes a la canalización de ASP.NET. En el modo Clásico, ASP.NET no sabe lo que no se le ha dicho y hay muchas cosas que IIS 6 / Classic puede no estar diciendo.

  • Modo integrado Se recomienda porque los controladores y módulos ASP.NET pueden interactuar directamente con la canalización de IIS. La canalización de IIS ya no transfiere simplemente la solicitud a la canalización de ASP.NET, ahora permite que el código ASP.NET se conecte directamente a la canalización de IIS y todas las solicitudes que lo golpean. Esto significa que un módulo ASP.NET no solo puede observar solicitudes a archivos de imágenes estáticas, sino que puede interceptar esas solicitudes y tomar medidas negando el acceso, registrando la solicitud, etc.

Superando el error:

  1. Si está ejecutando una aplicación anterior que se creó originalmente para IIS 6, tal vez la haya movido a un nuevo servidor, puede que no haya absolutamente nada de malo en ejecutar el grupo de aplicaciones de esa aplicación en el modo Clásico. Adelante, no tiene por qué sentirse mal.
  2. Por otra parte, tal vez le esté dando a su aplicación un lavado de cara o estaba funcionando bien hasta que instaló una biblioteca de terceros a través de NuGet, manualmente o por algún otro medio. En ese caso es completamente posible httpHandlers or httpModules han sido añadidos a system.web. El resultado es el error que está viendo porque validateIntegratedModeConfiguration por defecto true. Ahora tienes dos opciones:

    1. Eliminar el httpHandlers y httpModules elementos de system.web. Hay un par de posibles resultados de esto:
      • Todo funciona bien, un resultado común;
      • Su aplicación continúa quejándose, puede haber un web.config en una carpeta principal de la que está heredando, considere limpiar ese web.config también;
      • Te cansas de quitarte el httpHandlers y httpModules que los paquetes NuGet siguen agregando system.web, oye, haz lo que necesites.
  3. Si esas opciones no funcionan o son más problemáticas de lo que vale, no voy a decirles que no pueden configurar validateIntegratedModeConfiguration a false, pero al menos sabes lo que estás haciendo y por qué es importante.

Buenas lecturas:

* Por supuesto, hay formas de obtener todo tipo de cosas extrañas en la canalización de ASP.NET desde IIS 6 / Classic a través de encantamientos como asignaciones de comodines, si te gusta ese tipo de cosas.

Respondido 20 ago 14, 19:08

La única solución de +1 no es una respuesta a su problema, sino una solución con una explicación que es la respuesta perfecta. Qué es y por qué necesitamos cambiar esto, estas preguntas de respuesta dadas por @Jeremy cook responden. - Rikin Patel

Esta explicación me llevó a solucionar el problema de un pequeño sitio de prueba alojado en IIS 7.5 en modo integrado. Cuando creé un nuevo proyecto MVC, agregué httpModule, Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule en mi Web.config. Esto se debe a que dejé marcada la opción "Agregar información de aplicación al proyecto" al crear un nuevo proyecto de aplicación web ASP.NET. Cuando eliminé httpModule de Web.config, el sitio funcionó sin el error. Establecer validateIntegratedModeConfiguration en falso funcionó, pero eso fue solo un enfoque cursi. - iCode

Se ha detectado una configuración de ASP.NET que no se aplica en el modo de canalización administrado integrado. Este es otro mensaje de error inútil de Microsoft. ASP.net tiene miles de configuraciones, pero Microsoft no pensó en incluir la que causa el error en el texto del error. MS está siendo administrado por especialistas en marketing en lugar de ingenieros, así que no espere que las cosas mejoren pronto. :-( - Pablo McCarthy

Si aún necesita usar el módulo HTTP, debe configurarlo (marco .NET 4.0) de la siguiente manera:

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

Respondido el 02 de Septiembre de 14 a las 18:09

Creo que la propiedad HttpModules en system.web es para ASP 3.5 o anterior. Para ASP 4 o superior, utilice módulos en system.webserver - trío cheung

@HoyCheung, en realidad es cuestión de usar una canalización integrada o clásica, no qué versión de .Net, que decide si usar system.web / httpModules o system.webServer / modules. - Pauli Østerø

Me encontré con este problema pero tuve una solución diferente. Implicó actualizar el Control Panel>Administrative Tools>IIS Manager y revertir la canalización administrada de mi sitio de aplicaciones de Integrated a Classic.

contestado el 17 de mayo de 12 a las 20:05

De acuerdo, esta es la mejor opción en lugar de simplemente ocultar el error. Asegúrese de que está utilizando el grupo de aplicaciones correcto (debe ser clásico, no integrado) Swomble

Estoy usando Visual Studio 2012, ¿cómo puedo cambiar el grupo de aplicaciones al clásico? - usuario2913305

Esta no es una buena solución si desea utilizar todas las nuevas funciones disponibles en Integrated Pipeline. Esto es como decir volver a .NET 2.0 desde 4.0 debido a un problema. - Trevor de Koekkoek

Para hacer esto en el Administrador de IIS, vaya a Application Pools en el árbol de la izquierda, haga doble clic en el grupo que desea cambiar y elija el modo de canalización. - Steve Smith

Compruebe si hay algún conflicto en su autenticación IIS. es decir, si habilita la autenticación anónima y la suplantación de ASP.NET, ambas pueden causar el error también.

Respondido el 23 de enero de 14 a las 21:01

En su web.config asegúrese de que existan estas claves:

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

Además de comprobar el Asp.Net Impresonation = Desactivar En la autenticación del sitio de IIS

Respondido el 23 de junio de 16 a las 05:06

Me encontré con este problema e inspirado por la respuesta de @Jeremy Cook, mordí la bala para descubrir qué diablos causaba que el modo integrado IIS 7 no me gustara mi web.config. Aquí está mi escenario:

  1. API web (versión 4.0.030506.0 también conocida como la anterior)
  2. .NET 4.0
  3. Enrutamiento de atributos 3.5.6 para API web [alerta de spoiler: ¡era este tipo!]

Quería usar el enrutamiento de atributos en un proyecto que (desafortunadamente) tenía que usar .NET 4 y, por lo tanto, no podía usar Web API 2.2 (que necesita .NET 4.5). El paquete NuGet bien intencionado agregó esta sección bajo el <system.web> sección:

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

[Digo con buenas intenciones, porque esta parte es necesaria en versiones anteriores de IIS]

¡La eliminación de esta sección me ayudó a superar HTTP 500.23!

Resumen: Apoyo las palabras de Jeremy de que es importante entender por qué las cosas no funcionan en lugar de simplemente "enmascarar el síntoma". Incluso si tiene que enmascarar el síntoma, sabe lo que está haciendo (y por qué) :-)

Respondido 01 Jul 15, 02:07

Gracias. Agregué AttributeRouting, incluido el paquete NuGet del complemento Api Controller, y la eliminación de la sección que indicó de web.config resolvió el problema. Sin embargo, estoy un poco preocupado porque mi aplicación web MVC ya estaba usando .NET framework 4.5. - Roberto Oschler

@RobertOschler si está en .NET 4.5, ya tiene el enrutamiento de atributos integrado en AFAIK, ¿no debería necesitar este NuGet? - Sudhanshu Mishra

Gracias y mierda. Hoy pasaron algunas horas para que el paquete AttributeRouting ejecutara NuGet. Lo saqué y deshice todas las "correcciones" de código que agregué para que funcione, y sustituí el atributo Web API 2 Route () por el atributo GET (). Funcionó muy bien. Realmente necesitamos un sistema experto en estos días solo para ayudarnos con todos estos paquetes. - Roberto Oschler

Esto funcionó para mí:

  1. Elimina el sitio creado originalmente.
  2. Recrear el sitio en IIS
  3. Solución limpia
  4. Construir solución

Parece que algo salió mal cuando creé originalmente el sitio. Odio las soluciones que son similares a "Reinicie su máquina, luego reinstale Windows" sin saber qué causó el error. Pero esto funcionó para mí. Rápido y sencillo. Espero que ayude a alguien más.

Respondido 27 ago 14, 15:08

En mi caso, me faltaba dll en la carpeta bin a la que se hace referencia en el archivo web.config. Así que verifique si estaba usando alguna configuración en web.config pero en realidad no tiene dll.

Muchas Gracias

Respondido 24 Oct 17, 08:10

Me tomó algunas horas resolver esto porque todas las configuraciones que encontré aquí sobre este error eran las mismas, pero aún así no funcionó. El problema era que tenía una carpeta en mi servicio web desde la cual el archivo debería enviarse al dispositivo WinCE, después de convertir esa carpeta a una aplicación con Classic.NetAppPool, comenzó a funcionar.

Respondido 17 Oct 18, 09:10

El siguiente paso resolvió mi problema:

Abierta CMD Mensaje con privilegios de administrador.

Correr : iisreset.

Espero que esto ayude.

contestado el 07 de mayo de 20 a las 15:05

El método para local es el error.

imagen

Respondido 26 Abr '16, 09:04

No cambie esta configuración a menos que sepa realmente lo que está haciendo. Esta casi nunca es la respuesta correcta. - NickG

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.