Saltar al contenido

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

Solución:

El 2Dakota del Norte La opción es la que desea.

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

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

Añadiendo <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).

Fondo:

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 las solicitudes de 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 o httpModules han sido agregados a system.web. El resultado es el error que está viendo porque validateIntegratedModeConfiguration valores predeterminados 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 para false, pero al menos sabes lo que estás haciendo y por qué es importante.

Buenas lecturas:

  • ASP.NET 2.0 Cambios importantes en IIS 7.0
  • Integración de ASP.NET con IIS 7
  • Descripción general de los controladores HTTP y los módulos HTTP

* Por supuesto, hay formas de introducir 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.

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>
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *