c# - studio - El controlador "ExtensionlessUrlHandler-Integrated-4.0" tiene un módulo defectuoso "ManagedPipelineHandler" en su lista de módulos
publish website in iis 7 (21)
A pesar de seguir gran parte de los consejos de esta página, todavía tenía problemas con Windows Server 2012. Instalación de .NET Extensibility 4.5 (Agregar roles y características> Roles de servidor> Servidor web (IIS)> Servidor web> Desarrollo de aplicaciones> Extensibilidad .NET 4.5 ) Lo resolvió por mí.
Para ser honesto, traté de convertir un truco sucio en IIS y justo cuando pensé que iba a salirme con la suya, me di cuenta de que mi solución no funciona. Esto es lo que he tratado de hacer:
1) Tengo una aplicación ASP.NET que tiene una clase de Preloader que hereda IProcessHostPreloadClient y realiza toda la pesada inicialización en la implementación del método de Preload (la aplicación es compleja y es parte de un sistema enorme, por lo que se requieren aproximadamente 2 minutos para establecer conexiones a todos los dispositivos necesarios). servicios y pre-instanciar algunas inscripciones de Unity).
2) Tengo mucho trabajo por hacer en el cierre de la aplicación (cancelar la suscripción, desconectar, eliminar, ...), y creo que el mejor lugar para hacerlo es en el método * Application_End * ubicado en Global.asax .
3) Todo funciona bien cuando tengo actividad de usuario (la primera solicitud después de que se inicie el grupo de aplicaciones que contiene la aplicación web mencionada anteriormente provocará que se invoque * Application_Start * y, posteriormente, se llame a Application_End * cuando se detenga o recicle el grupo de aplicaciones), pero hay problemas. ocurre cuando no hay actividad del usuario y la aplicación intenta reiniciarse después de estar activa durante 48 horas (requisito configurado). Como no hubo solicitudes, la aplicación oficialmente no se inició. Ergo, no se puede detener con gracia ya que * Application_End * no se llamará.
4) Ahora viene la parte desordenada ... Intenté realizar una solicitud GET desde el código al final del método de precarga , y funcionó. Pero esta solución me pareció mala, aunque funcionó. Entonces, probé muchas cosas, y lo último que probé fue esto:
SimpleWorkerRequest swr = new SimpleWorkerRequest(string.Empty, string.Empty, tw);
HttpRuntime.ProcessRequest(swr);
... y eso ha hecho su propósito. Se llamó a * Application_Start * (verifiqué la respuesta, contenía la página de inicio de sesión que debía mostrarse en la solicitud inicial) y la aplicación de cierre del grupo de aplicaciones finalizó correctamente realizando el trabajo necesario en * Application_End *.
PERO
Después de que la aplicación se inició (precargada e iniciada) de esta manera, esto es lo que sucedió cuando quise llegar a la aplicación a través del navegador web:
Error HTTP 500.21 - El controlador interno de errores del servidor "ExtensionlessUrlHandler-Integrated-4.0" tiene un módulo defectuoso "ManagedPipelineHandler" en su lista de módulos
Soy incapaz de resolver esto ¿Alguien puede decirme por qué sucede esto y cómo solucionarlo?
Si no resuelvo esto, volveré a la primera solución (enviar una solicitud GET desde el código) pero este problema me molestará ya que ni siquiera tengo una idea de lo que está mal.
Asegúrese de haber configurado la versión del application-site
la application-site
de v2.0
a v4.0
en el Administrador de IIS :
Grupos de aplicaciones> Su aplicación> Configuración avanzada> Versión de .NET Framework
Después de eso, instale su ASP.NET
.
Para el sistema operativo de 32 bits (Windows):
C: / Windows / Microsoft.NET / Framework / v4.0.30319 / aspnet_regiis.exe -i
Para el sistema operativo de 64 bits (Windows):
C: / Windows / Microsoft.NET / Framework64 / v4.0.30319 / aspnet_regiis.exe -i
Reinicie su application-site
en el Administrador de IIS y disfrute.
Ejecuta uno de estos comandos:
Para el sistema operativo Windows de 32 bits:
c:/Windows/Microsoft.NET/Framework/v4.0.30319/aspnet_regiis.exe -i
Para el sistema operativo Windows de 64 bits:
c:/Windows/Microsoft.NET/Framework64/v4.0.30319/aspnet_regiis.exe -I
En mi caso (Windows 10 + IIS 10) tuve que abrir " Activar o desactivar las características de Windows " y luego ir a Servicios de información de Internet> Servicios de World Wide Web> Características de desarrollo de aplicaciones> y verificar ASP.NET 4.6
Este error comenzó a pasarme de la nada la semana pasada, afectando a los sitios web existentes en mi máquina. No tuve suerte con que intente ninguna de las sugerencias aquí. Finalmente, eliminé WebDAV de IIS por completo (Características de Windows -> Servicios de información de Internet -> Servicios de World Wide Web -> Características comunes de HTTP -> Publicación de WebDAV). Hice un reinicio de IIS después de esto por una buena medida, y mi error finalmente se resolvió.
Solo puedo suponer que una actualización de Windows inició el problema, pero no puedo estar seguro.
Este https://.com/a/13266763/1277458 funciona perfectamente. Pero si tiene un sistema operativo de 64 bits, use Framework64 en lugar de Framework en la ruta:
c:/Windows/Microsoft.NET/Framework64/v4.0.30319/aspnet_regiis.exe -i
Estoy trabajando en Windows Server 2012. La característica .NET Extensibility 4.5 está activada. WebDAVModule eliminado. Todavía recibía el error 500.21 en la ruta ASP.NET ''/ docs''.
Cambiar ''skipManagedModules'' a falso solucionó el problema.
<applicationInitialization doAppInitAfterRestart="true" skipManagedModules="false">
<add initializationPage="/docs" />
</applicationInitialization>
Gracias a https://groups.google.com/forum/#!topic/bonobo-git-server/GbdMXdDO4tI
Fui desafiado por el mismo mensaje de error, con .net 4.7 instalado.
La solución fue seguir una publicación mencionada anteriormente para ir con "Activar o desactivar la función de Windows", donde ".NET Framework 4.7 Advanced Services" -> "ASP.NET 4.7" ya estaba marcado.
Más abajo en la lista, se encuentran los "Servicios de información de Internet" y el subnote "Características de desarrollo de aplicaciones" -> "ASP.NET 4.7", que también debe verificarse.
Al habilitar esto, se habilitan otras características ... Simplemente presioné el botón Aceptar y el problema se resolvió. Screendump del diálogo de características de Windows
Haciendo de este su propio post porque esto me tuvo durante horas.
He visto una docena de publicaciones similares aquí y en otros lugares sobre este problema y la solución aspnet_regiis. No estaban trabajando para mí, y aspnet_regiis estaba actuando de forma extraña, solo enumerando opciones, etc.
Como el usuario ryan-anderson indicado anteriormente, no puede ingresar .exe
Para aquellos menos cómodos con cosas fuera de IIS en el servidor, esto es lo que hace en pasos simples.
Encuentra aspnet_regiis en una carpeta similar a esta ruta. c: / Windows / Microsoft.NET / Framework / v4.0.30319 /
Haga clic con el botón derecho en el símbolo del sistema en el menú de inicio o en cualquier lugar e indique que se ejecute como administrador. Usar la función "Ejecutar" de Windows simplemente no funciona, o no lo hizo para mí.
Volver al ejecutable aspnet_regiis. Haga clic y arrástrelo directamente en el símbolo del sistema o copie y pegue la dirección en el símbolo del sistema.
Quita, si está ahí, el .exe al final. Esta es la clave. Agrega el -i (espacio menos ojo) al final. Entrar.
Si lo hiciste correctamente, verás que comienza a instalar asp.net y luego te dice que fue un éxito.
Intente volver a registrar ASP.NET con aspnet_regiis -i
. Funcionó para mí.
Una ruta probable para .NET 4 (desde el símbolo del sistema elevado):
c:/Windows/Microsoft.NET/Framework/v4.0.30319/aspnet_regiis.exe -i
Me enfrentaba a este problema en una aplicación web alojada en un servidor de alojamiento compartido. Obviamente, no tenía acceso directo a IIS, por lo que no se pudieron aplicar muchas soluciones propuestas aquí.
En el panel de control del proveedor de alojamiento habilité el registro de errores para IIS y ASP.Net. Y luego llegó a saber que el error realmente mentía en un cshtml faltante.
Para Windows 10 / Windows Server 2016 use el siguiente comando:
dism /online /enable-feature /featurename:IIS-ASPNET45 /all
Las respuestas sugeridas con aspnet_regiis
no funcionan en Windows 10 (Actualización de creadores y posteriores) o Windows Server 2016:
C: / Windows / Microsoft.NET / Framework / v4.0.30319 / aspnet_regiis.exe -i
Microsoft (R) ASP.NET RegIIS versión 4.0.30319.0
Utilidad de administración para instalar y desinstalar ASP.NET en la máquina local.
Copyright (C) Microsoft Corporation. Todos los derechos reservados.
Comience a instalar ASP.NET (4.0.30319.0).
Esta opción no es compatible con esta versión del sistema operativo. Los administradores deben instalar / desinstalar ASP.NET 4.5 con IIS8 mediante el cuadro de diálogo "Activar / desactivar características de Windows", la herramienta de administración del Administrador del servidor o la herramienta de línea de comandos dism.exe. Para obtener más información, visite http://go.microsoft.com/fwlink/?LinkID=216771 .
Finalizó la instalación de ASP.NET (4.0.30319.0).
Curiosamente, el cuadro de diálogo "Activar / desactivar las características de Windows" no me permitió desmarcar .NET ni ASP.NET 4.6, y solo funcionó el comando DISM anterior. No estoy seguro de si el nombre de la característica es correcto, pero funcionó para mí.
Para mí, la eliminación de WebDAV de mi servidor hizo que la aplicación devolviera un mensaje de error de 503 Service Unavailable
al usar PUT
o DELETE
, por lo que lo reinstalé de nuevo. También intenté eliminar por completo .NET Framework 4.5 y reinstalarlo, y también intenté volver a registrarme como se sugirió pero fue en vano.
Pude solucionar esto al deshabilitar WebDAV para el grupo de aplicaciones individuales , esto detuvo el error de "módulo incorrecto" al usar PUT
o DELETE
.
Deshabilite WebDAV para el grupo de aplicaciones individuales:
- Haga clic en el grupo de aplicaciones afectadas
- Encuentre las
WebDAV Authoring Tools
en la lista - Haz click para abrirlo
- Haga clic en
Disable WebDAV
en la parte superior derecha.
Ta daaaa!
Todavía dejé los elementos eliminados en mi archivo web.config
.
<system.webServer>
<modules>
<remove name="WebDAVModule"/>
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
<system.webServer>
Este enlace es donde encontré las instrucciones pero no está muy claro.
Podría arreglarlo cambiando el tipo "ExtensionlessUrlHandler-Integrated-4.0" en iis a System.Web.DefaultHttpHandler
Quizás esta no sea una solución útil para OP, pero se trata del mismo mensaje de "error".
Estamos alojando páginas PHP en IIS8.5 con .NET 4.5 instalado correctamente.
Hacemos uso de la funcionalidad de precarga para asegurarnos de que nuestra aplicación siempre sea receptiva en todos los ámbitos.
Después de un tiempo comenzamos a recibir este error al azar.
En el web.config: pongo skipManagedModules en true, -> ¡no hagas esto!
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<applicationInitialization skipManagedModules="false" doAppInitAfterRestart="true">
<add initializationPage="/" />
</applicationInitialization>
...
Aunque el sitio web es php, el enrutamiento a la paginación es administrado por los módulos.
Resolví este problema, agregando "Activar o desactivar las características de Windows" La opción ASP.NET 4.7
Sé que esto es un viejo, pero pensé que podría agregar algo de valor. Para aquellos de nosotros que ejecutamos Server Core fuera de un dominio (los miembros del dominio solo pueden ejecutar Server Manager de forma remota para agregar / eliminar funciones / roles), debe recurrir a las líneas de comando.
Los usuarios de Powershell pueden escribir "Install-WindowsFeature Web-Asp-Net45"
Eso debería ser equivalente a usar el administrador del servidor.
Si se encuentra con este error con Windows 8 / Windows Server 2012 y .Net 4.5, siga estas instrucciones aquí: http://www.britishdeveloper.co.uk/2013/01/handler-extensionlessurlhandler.html
Vaya a "activar o desactivar las características de Windows", luego Internet Information Services, luego a World Wide Web Services, luego a Application Development Features y luego habilite ASP.NET 4.5
Esto me funcionó (aunque el asistente y la redacción son un poco diferentes en Windows Server 2012, pero lo resolverás). Habiendo dicho esto, por qué es necesario después de instalar todo a través del Instalador de la Plataforma Web, incluyendo todas las dependencias, está completamente fuera de mi alcance ...
También me encontré con ese problema. Mi aplicación MVC4 se ejecuta en un Windows Server 2012 R2 con IIS 8.5. Ninguna de estas soluciones publicadas funcionó para mí ... la instalación de los marcos faltantes a través de las Características de IIS podría haberlo solucionado, pero la instalación siempre falló.
Tuve que usar el Web Platform Installer
e instalé los siguientes paquetes:
Tuve este problema y encontré que eliminar la siguiente carpeta ayudó, incluso con la edición no Express.Express:
C:/Users/<user>/Documents/IISExpress
El problema
Está utilizando SimpleWorkerRequest en un escenario para el que no fue diseñado. Lo estás usando dentro de IIS . Si miras el enlace de MSDN anterior (el énfasis es mío):
Proporciona una implementación simple de la clase abstracta HttpWorkerRequest que se puede usar para hospedar aplicaciones ASP.NET fuera de una aplicación de Internet Information Services (IIS) . Puede emplear SimpleWorkerRequest directamente o ampliarlo.
Además, si observa la documentación de MSDN para el espacio de nombres System.Web.Hosting ( SimpleWorkerRequest
está en este espacio de nombres), también verá algo similar al anterior (de nuevo, el énfasis es mío):
El espacio de nombres System.Web.Hosting proporciona la funcionalidad para alojar aplicaciones ASP.NET desde aplicaciones administradas fuera de Microsoft Internet Information Services (IIS) .
La solución
Recomendaría eliminar la llamada a SimpleWorkerRequest
. En su lugar, puede usar una solución de Microsoft para asegurarse de que su sitio web se inicie automáticamente después de que se recicle. Lo que necesita es el módulo de inicialización de aplicaciones de Microsoft para IIS 7.5 . No es complicado de configurar, pero necesita entender las opciones exactas. Por eso también recomendaría la IU de inicialización de la aplicación para IIS 7.5 . La interfaz de usuario está escrita por un blogger de MSDN.
Entonces, ¿qué hace exactamente la solución de Microsoft? Hace lo que está intentando hacer: IIS envía una solicitud de "obtención" a su sitio web una vez que se inicia el grupo de aplicaciones.