Error HTTP 500.19 y código de error: 0x80070021

219

Tengo una compilación webAPI simple de Visual Studio 2013. Funciona bien cuando lo ejecuto desde VS13 pero cuando copio el proyecto en IIS local me da el siguiente error.

Error HTTP 500.19 - Error interno del servidor No se puede acceder a la página solicitada porque los datos de configuración relacionados para la página no son válidos.

Información de error detallada:

Módulo IIS Web Core

Notificación BeginRequest

Manejador Aún no determinado

Código de error 0x80070021

Error de configuración Esta sección de configuración no se puede utilizar en esta ruta. Esto sucede cuando la sección está bloqueada en un nivel primario. El bloqueo se realiza de manera predeterminada (overrideModeDefault = "Deny"), o se establece explícitamente mediante una etiqueta de ubicación con overrideMode = "Deny" o el legado allowOverride = "false".

Archivo de configuración \? \ C: \ inetpub \ wwwroot \ APITeslin \ web.config

Fuente de configuración:

36:   <system.webServer>  
37:     <handlers>  
38:       <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
Umar Abbas
fuente
Es probable que la autenticación de Windows esté deshabilitada en IIS, pero es necesaria en el archivo web.config de su aplicación.
SpaceBison
@SpaceBison, ¿cómo puedo habilitar la autenticación de Windows en IIS8?
Umar Abbas
Aquí hay un enlace de mi archivo webconfig. icopter.co.uk/Webconfig.txt
Umar Abbas
¿Has considerado usar el módulo de reescritura de URL?

Respuestas:

346

Obtuve exactamente el mismo error y llegué a esta pregunta. Como @SpaceBison mencionó en los comentarios, esta respuesta describe la solución: https://stackoverflow.com/a/12867753/404099 . Lo vi demasiado tarde y se saltan algunos pasos. Esto es lo que funcionó para mí:

Windows Server 2012, IIS 8.5 . Debería funcionar para otras versiones también.

  • Vaya al administrador del servidor, haga clic en Agregar roles y características
  • En la sección de roles, elija: Servidor web
    • En la subsección Seguridad, elija todo (excluí el resumen, las restricciones de IP y la autorización de URL, ya que no los usamos)
    • En Desarrollo de aplicaciones, elija .NET Extensibility 4.5, ASP.NET 4.5 y ambas entradas ISAPI
  • En la sección de características, elija: NET 3.5, .NET 4.5, ASP.NET 4.5
  • En la sección del servidor web, elija: Servidor web (todos), Herramientas de administración (Consola de administración de IIS y Servicio de administración), Autenticación de Windows, si está utilizando alguno de ellos.
Ilia Barahovski
fuente
13
Todo lo que tuve que agregar fueron los elementos .NET 4.5 en la sección AppDev y la sección Características. El elemento de extensibilidad también forzó las 2 entradas ISAPI.
Bill
Esos pasos me ayudan con el problema. Gracias.
psulek
Finalmente, una solución para resolver mis dolencias. Gracias, tiene sentido, y es bastante simple. Siempre parece faltar características y roles en estos días ...
Alexandru
el ServerManager no está disponible en Windows7 Home, ¿cómo solucionarlo?
Knocte
1
@knocte: en Windows 7 puede ingresar "Desinstalar o cambiar un programa" y luego presionar "Activar o desactivar las características de Windows". Esto no es lo mismo que el Administrador del servidor, pero puede instalar IIS y funciones relacionadas de esta manera.
Ilia Barahovski
122

Recibí este error al intentar alojar un servicio WCF en una aplicación ASP.NET vacía. Toda la solución estaba usando la plataforma .NET 4.5, en IIS 8.5 que se ejecuta en Windows 8.1. El gotcha era

  1. Abra "Activar o desactivar las características de Windows"

  2. Vaya a la sección WCF en Servicios avanzados de ASP.NET 4.5

  3. Verifique la activación de HTTP.

  4. Se le pedirá que reinicie el sistema.

    Captura de pantalla

Esto debería arreglar el HTTP 500.19!

EDITAR 11-FEB-2016 Acabo de recibir un problema en Windows 10 Pro, IIS 10, esta vez, era un HTTP 404.0. La solución sigue siendo la misma, active "Activación HTTP" en Características de Windows -> .NET Framework 4.6 Servicios avanzados -> Servicios WCF -> Activación HTTP

Sudhanshu Mishra
fuente
¡Muchas gracias @dotnetguy! :-) funcionó para mí también. El error se produjo cuando intenté alojar Web API 2.2 y MVC en la aplicación ASP.NET vacía.
Gurusinghe
@dotnetguy Esto es exactamente lo que me ayudó después de no poder hacer que IIS funcionara con mi aplicación MVC local en Visual Studio. Muchas gracias. ¡Activación HTTP lo es!
silkfire
@silkfire me alegro de que haya ayudado.
Sudhanshu Mishra
@dotnetguy Gracias
Heemanshu Bhalla
@dotnetguy ¡Tengo exactamente el mismo problema y esto lo resolvió! ¡Muchas gracias! ¡Realmente eres un tipo .Net! : D
Rian
47

También estaba teniendo el mismo problema, pero después de una tormenta de ideas con IIS y Google durante muchas horas. Encontré la solución. Este error se debe a que algunas configuraciones están deshabilitadas en IIS applicationHost.config.

A continuación se detallan los pasos para la solución:

  1. Ir C:\Windows\System32\inetsrv\config\applicationHost.configy abrir en el bloc de notas
  2. Cambie el siguiente valor clave presente en

    • <section name="handlers" overrideModeDefault="Deny" /> cambie este valor de "Denegar" a "Permitir"

    • <section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" /> cambie este valor de "Denegar" a "Permitir"

Funcionó para mi.

SeeTheC
fuente
2
Gracias. Después de hacer estos pasos, apareció el siguiente error. Podría resolverlo como se describe aquí: stackoverflow.com/a/30594003/434742
Jenny O'Reilly
31

Si está ejecutando IIS en esa computadora por primera vez, debe intentar ejecutar la herramienta de registro ASP.NET IIS (aspnet_regiis.exe).

A continuación, le indicamos cómo hacerlo: si está usando .net framework v4, abra el símbolo del sistema como administrador y cambie el directorio a su carpeta base de .net framework usando:

CD C:\Windows\Microsoft.NET\Framework\v4.0.30319

o, si está usando una computadora de 64 bits, use:

CD C:\Windows\Microsoft.NET\Framework64\v4.0.30319

cuando haya navegado con éxito al directorio apropiado, ejecute la herramienta de registro ASP.NET IIS usando:

aspnet_regiis -i

Si está utilizando una versión de .NET framework diferente, simplemente reemplácela v4.0.30319con el nombre de carpeta apropiado.

Espero que esto ayude.

Ibrahim Dauda
fuente
Estoy tratando de ejecutar dos proyectos VS diferentes en mi servidor iis (máquina virtual); uno funciona, uno no ... Lo anterior ayudó a que el primero funcionara; ¿Hay alguna razón por la que el segundo no debería funcionar?
JosephDoggie
77
Utilicé este método en el pasado, pero aspnet_regiis ya no es compatible con Windows 8.1. Para registrar 4.5 use los Programas y características> Active o desactive las características de Windows> Servicios de información de información> Servicios de World Wide Web> Características de desarrollo de aplicaciones> Verifique ASP.NET 4.5 y cualquier otra cosa que pueda necesitar.
masterwok
1
esto debe ejecutarse como Administrador (haga clic con el botón derecho en el icono cmd.exe -> ejecutar como administrador), e incluso si puede detectar errores durante la operación (y generar un archivo de registro), ¡funcionó para mí!
Knocte
2
Para IIS 8.5 en Windows 8.1 (o Windows Server 2012) esto no funciona. Recibí el siguiente mensaje: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319> aspnet_regiis.exe -i Comienza a instalar ASP.NET (4.0.30319.33440). Esta opción no es compatible con esta versión del sistema operativo. En su lugar, los administradores deben instalar / desinstalar ASP.NET 4.5 con IIS8 utilizando 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.
Sudhanshu Mishra
¡¡Gracias!! Me funciona con IIS 10 y Windows 10 :)
Víctor Beltrán
22

Resolví esto haciendo lo siguiente:

WebServer(ISS)->WebServer->Application Development
add .NET Extensibility 3.5
add .NET Extensibility 4.5
add ASP.NET 4.5
add ISAPI Extensions
add ISAPI Filters

ingrese la descripción de la imagen aquí

GIOESCOM
fuente
10

En Windows 8.1, IIS 8.5, la solución para mí fue registrar 4.5 desde el panel de control:

Programas y características> Activar o desactivar características de Windows> Servicios de información de información> Servicios de World Wide Web> Características de desarrollo de aplicaciones> Seleccione ASP.NET 4.5

Haga clic en Aceptar.

Jon
fuente
3
En Windows 10, las opciones eran 'ASP', ASP.NET.35. 'Y' ASP.NET 4.6 '. La comprobación 4.6 funcionó para mí. ¡Gracias!
PeterVermont
Creo que esta es la respuesta más concisa y fácil de entender.
themefield
4

A medida que el error se identifica - "Esto sucede cuando la sección está bloqueada en un nivel primario". Para desbloquear la sección, puede usar appcmd.exe y ejecutar el siguiente comando:

%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/handlers -commitpath:apphost

Para obtener más información sobre el bloqueo de secciones y el contexto de configuración principal, consulte la documentación de IIS .

Taras Alenin
fuente
4

En nuestro caso, tuvimos problemas con este error durante varios días. Resulta que en el panel de control, los programas, activan o desactivan las funciones de Windows.

Seleccionamos servicios de información de Internet, servicios de Internet, características de desarrollo de aplicaciones y allí verificamos el conjunto de características asociadas con nuestro entorno de desarrollo. Por ejemplo: ASP.NET 4.6. .NET Extensibility 4.6, etc.

¡Funciona!

Javier Livio
fuente
1
Esto solucionó mi problema también. Entonces, el problema fue que, después de agregar IIS a mi máquina local, no habilité las funciones adecuadas. Esto lo resolvió. Gracias.
jbooker
3

Intente desbloquear la configuración de IIS (7.5) relevante a nivel del servidor, de la siguiente manera:

  1. Abra el administrador de IIS
  2. Seleccione el servidor en el panel Conexiones
  3. Abra el Editor de configuración en el panel principal
  4. En el menú desplegable Secciones, seleccione la sección para desbloquear, por ejemplo, system.webServer> defaultPath
  5. Haga clic en Desbloquear Atributo en el panel derecho
  6. Repita para cualquier otra configuración que necesite desbloquear
  7. Reiniciar IIS (opcional): seleccione el servidor en el panel Conncetions, haga clic en Reiniciar en el panel Acciones
Chris
fuente
Esto es casi útil, pero en IIS 7 no hay "defaultPath" en system.webServer
Djorge
Con eso quiere decir que si está buscando actualizar la Autenticación de Windows, la encontrará en la ruta system.webServer -> Seguridad -> Autenticación.
Mido
3

En mi caso, había reglas para el módulo de reescritura de URL de IIS pero no tenía ese módulo instalado. Debe verificar su web.config si hay módulos incluidos pero no instalados.

HasanG
fuente
1
Acabo de instalar todo lo demás necesario, pero todavía no lo tengo funcionando. Luego, acabo de instalar el módulo URL Rewrite, ¡y lo puse a funcionar! ¡Gracias!
Vitox
Si falta el módulo URL Rewrite, el código de error no será 0x80070021.
Lex Li
3

Si es Windows 10, abra el PowerShell como administrador y ejecute el siguiente comando:

dism /online /enable-feature /all /featurename:IIS-ASPNET45
usuario2912206
fuente
1

Su web.config describe que está utilizando la autenticación de formularios : asegúrese de habilitar la autenticación de formularios y deshabilitar la autenticación anónima en IIS en el menú Autenticación, para el sitio web que se ejecuta en IIS.

SpaceBison
fuente
0

Por favor, <staticContent />alinee y borre de la web.config.

Erdogan
fuente
0

Bueno, estamos usando Amazon Web Services, por lo que estamos buscando usar scripts y programas para superar este problema. Así que he estado buscando una herramienta de línea de comandos. Así que primero probé el truco de correr

c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

pero porque estoy ejecutando un Windows Server 2012 basado en la nube se quejó

This option is not supported on this version of the operating system. Administrators should instead install/uninstall ASP.NET 4.5 with IIS8 using the "Turn Windows Features On/Off" dialog, the Server Manager management tool, or the dism.exe command line tool. For more details please see http://go.microsoft.com/fwlink/?LinkID=216771.

y busqué en Google y encontré la página oficial de soporte de Microsoft KB2736284 . Entonces hay una herramienta de línea de comando dism.exe. Así que probé lo siguiente

dism /online /enable-feature /featurename:IIS-ASPNET45

pero se quejó y dio una lista de nombres de funciones para probar, así que los probé uno por uno y probé mi página web de WebAPI después de cada uno y funcionó después del último en la lista.

dism /online /enable-feature /featurename:IIS-ApplicationDevelopment
dism /online /enable-feature /featurename:IIS-ISAPIFilter 
dism /online /enable-feature /featurename:IIS-ISAPIExtensions 
dism /online /enable-feature /featurename:IIS-NetFxExtensibility45 

Y ahora puedo navegar a mi sitio WebAPI y ver la información de la API. Eso debería ayudar a algunas personas. [Sin embargo, todavía no estoy totalmente fuera de peligro y no puedo acceder al sitio web desde fuera de la caja. Sigo trabajando en eso.]

Además, hice algunos pasos anteriores siguiendo las respuestas de otras personas. Puedo confirmar que la siguiente Delegación de características debe cambiarse (aunque me gustaría encontrar una herramienta de línea de comandos para estos).

In Feature delegation

Change 
'Handler Mappings' from Read Only to Read/Write

Change 
'Modules' from Read Only to Read/Write

Change 
'SSL Settings' from Read Only to Read/Write
S Meaden
fuente
-1

Compruebe si el servidor IIS instaló la función de reescritura de URL.
Si no está instalado, asegúrese de que su archivo web.config no tenga la configuración relacionada con la reescritura de URL

<!-- Make sure don't have below config, if server have not installed url rewrite feature. -->
<rewrite>
  <rules>
    <rule name="Fail bad requests">
      <match url=".*"/> ...

En algún momento copiamos la configuración del servidor heredado y la implementamos de inmediato en un servidor nuevo, entonces podemos encontrar ese tipo de problema 500.

Frank Myat Thu
fuente
Si falta la reescritura de URL, el código de error no será 0x80070021.
Lex Li
-3

La solución que funcionó para mí fue eliminar mi configuración Web.config actual y agregar una nueva. Eso resolvió el problema para mí

Pheko Moroke
fuente
66
Renunciar a mi trabajo es más fácil que crear un nuevo web.config. Nunca intentes hacerlo.
Shadi Namrouti