No se puede acceder a la página solicitada porque los datos de configuración relacionados para la página son un error no válido


480

Quiero cargar mi propio sitio web asp.net en IIS con IIS Manager. Pero cuando hago esto, aparece 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

Módulo IIS Web Core
Notificación
Controlador desconocido Aún no determinado
Código de 0x80070005
error Error de configuración No se puede leer el archivo de configuración debido a permisos insuficientes
Archivo de configuración \\?\C:\Users\Yasso\Documents\Visual Studio 2008\WebSites\WebSite5\web.config

Busqué muchas veces una solución para este error, pero ninguna de las soluciones resolvió el error.

Tengo un problema con mi IUSRcuenta. No puedo ver esta cuenta en los "nombres de grupo o de usuario" en las propiedades de web.config.

¿Cuál es el problema?


3
Tuve este problema después de revertir algunos cambios a través de Subversion (aunque podría ser una coincidencia). Noté que las Web.configACL del archivo eran diferentes a otros archivos en el directorio y no se heredaba de su padre . Permití la herencia de ACL y todo volvió a la normalidad.
ta.speot.is

1
Mi solución fue ligeramente diferente. En algunas máquinas con Windows Server 2008, debe dar acceso al grupo "IIS_IUSRS", no al usuario "IUSR", dentro de los permisos de seguridad de la carpeta del sitio. Asegúrese de ir a la ubicación de su máquina.
MacGyver

77
Tuve este problema al mover un sitio a un servidor que no tenía instalado el módulo IIS Url Rewrite.
ScottE

1
Esto puede suceder SI ha cambiado el nombre de su servidor. Me hice esto a mí mismo, y finalmente tuve que ingresar (Windows Server 2012 R2) y volver a agregar IIS APPPOOL \ SiteName ... y eso se solucionó al 100%.
Michael K. Campbell

2
si es nuevo en la implementación de aplicaciones ASP.NET Core en su antiguo servidor 2008 R2, debe instalar el paquete de alojamiento de servidor Windows .NET Core , como aprendí en esta respuesta
bkwdesign

Respuestas:


178

El mensaje dice que su archivo de configuración está dañado de alguna manera. Sin embargo, también dice que en realidad no puede acceder al archivo de configuración. Por lo tanto, ignoraría el mensaje original sobre corrupción / falta de validez, ya que probablemente sea solo el efecto de no poder leer el archivo debido a la falta de autorización.

La razón por la que no puede leer el archivo de configuración es porque el proceso que ejecuta su aplicación web no tiene permiso para acceder al archivo / directorio. Por lo tanto, debe otorgar esos permisos al proceso que ejecuta su aplicación web.

Los derechos de acceso deben ser bastante directos, es decir, al menos Leer y, según su aplicación, tal vez Escribir .

Arriba, mencionas que IUSR, etc., no está en las propiedades de web.config. Si con eso quiere decir que IUSR no aparece en la pestaña de seguridad del archivo, entonces es algo bueno. Uno no quiere dar a IUSR ningún tipo de permiso para web.config . El rol de IUSR es un usuario anónimo de internet.

El archivo web.config debería solo ser accesible a través de su aplicación.

El problema es que no ha dicho qué versión de SO e IIS está utilizando, por lo que es difícil aconsejar qué pasos tomar.

Es decir, en IIS 7.5, es probable que aparezca el mensaje de error que está citando debido a que a su ApplicationPoolIdentity no se le asignaron los permisos. Su aplicación web pertenece a un grupo de aplicaciones y, por lo tanto, debe otorgar los permisos a la cuenta del sistema operativo con la que se ejecuta el grupo de aplicaciones de su aplicación web. A menudo, esto es algo así como NetworkService, pero es posible que lo haya personalizado para que se ejecute bajo una cuenta específica. Sin más información es difícil ayudarte.


3
¿Puedo dar este permiso mediante programación? Por favor ayuda. Estoy teniendo el mismo problema
pcbabu

1
Gracias, esto resolvió mi problema también. Estoy usando la suplantación que aparentemente hace que sea necesario asignar permisos READ al directorio de la aplicación para la cuenta suplantada.
Cesar

2
Sigo recibiendo "Error al enumerar objetos en el contenedor. Acceso denegado". después de dar permiso
RollRoll

44
Haga clic derecho en la carpeta a la que necesita dar permiso de seguridad. Esta es la carpeta raíz donde se publica su aplicación y es la misma carpeta que la ruta física del sitio web de IIS. Elija las propiedades del menú contextual y haga clic en la pestaña Seguridad. Edite usuarios y luego agregue un usuario. Haga clic en el botón Ubicaciones y elija el icono superior (se parece a Mi PC). En el área de texto, ingrese IIS_IUSRS. Presione OK repetidamente hasta que todos los menús contextuales estén cerrados. Reinicie su sitio web y navegue nuevamente hacia él.
Jeremy Ray Brown

Si no desea averiguar los permisos en la ruta física del sitio web, ¡dé permiso a todos! Es un hack rápido y no recomendado para todo el acceso físico a archivos / carpetas.
Jeremy Ray Brown

662

Esto también puede suceder si el sitio está configurado para usar el módulo IIS URL Rewrite pero no está instalado.


Esto fue todo para mí ... eliminé la sección de reescritura (que de todos modos no era realmente necesaria) y todo está bien.
Andrew Patterson

129129
Bien jugado. <rant> Sería bueno si IIS arrojara un error "No entiendo qué es <rewrite>", en lugar de quejarse de XML con formato incorrecto. </rant>
Evan Haas

77
Muchas gracias, ese fue mi problema también. El módulo de reescritura está en uso si ve la etiqueta <rewrite>. Uno podría pensar que IIS podría decirle qué no se puede analizar.
scolestock

66
Buena manera fácil de resolver la dependencia que falta en la línea de comando; webpicmd / Install / Products: UrlRewrite2
cirrus

2
Solo me gustaría señalar que si su web.config incluye una etiqueta <rewrite>, entonces necesita el módulo de reescritura.
Jono

437

Finalmente , obtuve la solución para mi problema. La cuenta ASP.net no apareció en el administrador de IIS, porque no marqué su casilla de verificación en IIS. Para hacer esto en Windows 7, siga los pasos:

  1. Panel de control abierto
  2. Haga clic en el enlace "programa" (no desinstalar programas)
  3. Haga clic en el enlace "activar / desactivar las características de Windows"
  4. Busque "Servicios de Internet Information Server IIS" en la ventana emergente y expanda su nodo
  5. Expanda el nodo "Servicio World Wide Web"
  6. Expanda el nodo "Características de desarrollo de aplicaciones"
  7. Marque la casilla de verificación de "ASP.NET"
  8. Luego haga clic en el botón Aceptar

Ahora, verá la cuenta ASP.net en el administrador de IIS y, de manera predeterminada, verá la cuenta de IIS. Ahora, debe mover su sitio web ASP.net de "mi documento" a otro lugar donde el IIS tenga permiso para acceder a él (es decir, a otra partición en su computadora). Ahora, navegue por su sitio web desde el administrador de IIS y debería funcionar.

Muchas gracias por Jeff Turner por la solución.


Alguien debe haber eliminado este servicio de rol de un servidor que había estado ejecutándose durante meses. Nunca hubiera adivinado comprobarlo dos veces. Ugh
SixOThree

Aún más fácil, usando la línea de comando:dism /NoRestart /Online /Enable-Feature /FeatureName:IIS-ASPNET
i3arnon

1
Gracias ... ¿cómo pueden lanzar un producto con tan bajo nivel de mensajes de error?
Vland

Mi sección <handlers> tenía una referencia a WebDAV y una vez que agregué la función WebDAV a IIS funcionó.
Andy Roberts


47

Estaba teniendo el mismo problema, aquí está la solución que funcionó para mí.

  1. Gerente de IIS
  2. Haga clic derecho en ese sitio web
  3. Editar permisos
  4. Usuario agregado 'IIS_IUSRS' de la pestaña Seguridad
  5. Dio permisos completos al usuario 'IIS_IUSRS'
  6. Establezca la identidad del grupo de aplicaciones en 'ApplicationPoolIdentity'

2
No recomendaría esto para fines de producción. Creo que IIS_IUSRS es una cuenta anónima y le daría acceso completo a toda la estructura de directorios del sitio web
Jacques

También me salvó el día, ya que descubrí que el permiso también es el culpable. ¡Utilicé otra identidad de apppool y funcionó!
Cerca del

39

Para desarrolladores de Visual Studio (VS): como lo insinuó Harvey Darvey, Savage y Snives, la configuración de host de la aplicación puede estar apuntando a la ruta física de la aplicación incorrecta. Buscar VirtualDirectory dentro /.vs/config/applicationhost.config cambiar el physicalPath si no es correcta.

ingrese la descripción de la imagen aquí

Asegúrese de que PhysicalPath sea ​​correcto:

ingrese la descripción de la imagen aquí


3
También puede hacer exactamente lo mismo en project => properties => project url => create virtual directory, seleccione yes para reasignar a la ruta física correcta cuando se le solicite
Adam Diament

En mi caso fue un poco diferente, pero me dio la dirección, muchas gracias, me ayudó mucho :)
Bharat

24

Alerta de Facepalm:

También recibirá este error si la ruta al archivo de configuración es incorrecta. Vuelva a verificarlo para asegurarse de que la ruta física se haya ingresado correctamente en IIS.


Como una variante de esto, resulta que configuré la ruta de acceso incorrectamente al sitio en sí. Accidentalmente revisé el recurso compartido de red asignado en lugar de la ruta del archivo del sistema local.
David

2
Tuve el mismo momento cara-palma. Moví mi sitio web a una subcarpeta y pensé que había escrito correctamente la nueva ruta en IIS. El sitio todavía parecía tener todas las carpetas requeridas, etc. debajo de él, que se mostraban en el árbol en IIS, por lo que no desencadenó que esta fuera la razón. Restablecí los permisos, etc., no lo resolví. Luego, hablando sobre el tema, me lo sugirieron de pasada ... ¡y ahora tengo un sitio de trabajo nuevamente después de 1 hora de tiempo perdido!
ladygargar

¿Dónde se establece este camino? Este parece ser mi problema, pero no puedo encontrar lo que necesito cambiar
Drew Rochon

En el entorno de desarrollo: .vs> config> applicationhost.config Esto es lo que sucede cuando no se ignora un GIT en el archivo y los desarrolladores comienzan a registrarlo.
Savage

Tuve una barra "\" extra en mi camino físico: shesh. Gracias por esto
J King

18

Debe asignar permisos para IIS_IUSRS en la máquina local (pero no tiene que asignar para IUSR, de hecho funcionará incluso si niega explícitamente los permisos).

Para asignar permisos, simplemente haga clic derecho en la carpeta y en la pestaña de seguridad, asegúrese de otorgar los permisos correctos, y si el usuario no está en la lista, haga clic en "AGREGAR" e ingrese IIS_IUSRS (y asegúrese de que bajo "dominio" el local se selecciona la computadora, o ingrese en el campo de nombre YourLocalComputerName \ IIS_IUSRS), y ya está listo para comenzar.

Si lo desea, puede en lugar de asignar permisos al grupo IIS_IUSRS, puede asignar al grupo de aplicaciones que en general debería ser "IIS APPPOOL \ nombre del grupo de aplicaciones ".


Desde el siguiente sitio web: iis.net/learn/get-started/planning-for-security/… El grupo IIS_IUSRS reemplaza al grupo IIS_WPG. Este grupo integrado tiene acceso a todos los archivos y recursos del sistema necesarios para que una cuenta, cuando se agrega a este grupo, pueda actuar sin problemas como una identidad de grupo de aplicaciones.
Jeremy Ray Brown

Aún obteniendo acceso denegado.
GreySage

15

Solo para incorporar, recibí el mismo tipo de error y mi problema era bastante simple: me faltaba el paquete de alojamiento de .NET Core. Una vez que instalé la herramienta y reinicié el servidor, estuvo bien.

Puede encontrar el manual para alojar asp.net core en Windows aquí: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2


Simplemente instalar .NET Core SDK no es suficiente para ejecutar sus sitios web ASP.NET Core en IIS. Pasé varias horas trabajando en este error ...
Ryan Rodemoyer

Puede que no sea suficiente, pero resuelve este error. Trabajó para mi. Supuse que todos los componentes .NET ya estaban incluidos.
pcalkins

Sí, tuve que instalar "Runtime & Hosting Bundle" aquí: dotnet.microsoft.com/download/dotnet-core/2.2
Kirk Woll

Ok, el paquete "autocontenido" no cumple con su título.
SLCH000

11

Lo mismo sucedió conmigo, intente verificar esto haciendo doble clic en las cadenas de conexión en el panel derecho de IIS 7 cuando seleccione un sitio web.

Le dará un error (que hay algún problema con el archivo de configuración web), porque ha utilizado reglas de reescritura de URL y el componente respectivo no está instalado.

Instale "Microsoft URL Rewrite Module 2.0 for IIS 7" y esto debería solucionar su problema


9

Nada aquí funcionó para mí, encontré este comando en otra respuesta SO y resolvió mi problema. Simplemente inicie el símbolo del sistema como administrador y ejecute este comando:

run->cmd

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

Crédito: Usuario Vicxx


Para arreglar mi entorno de desarrollo vs 2017 tuve que eliminar IIS de mis características de Windows 7. Vuelva a agregarlo, actualice e instale todo lo que necesite. El último paso fue ejecutar los registros desde el símbolo del sistema de Visual Studio 2017. Ahora todo funciona de nuevo, 8 horas de tiempo dedicado a solucionar esto. uck ..
Warren LaFrance

7

Realizo estos pasos para resolver este problema en Windows Server 2012, IIS 8.5. Debería funcionar para otras versiones también.

  1. Vaya al administrador del servidor, haga clic en Agregar roles y características
  2. En la sección de roles, elija: Web Server
  3. 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)
  4. En Desarrollo de aplicaciones, elija .NET Extensibility 4.5, ASP.NET 4.5y ambas ISAPIentradas
  5. En la sección características elegir: NET 3.5, .NET 4.5,ASP.NET 4.5
  6. En la sección del servidor web, elija: Web Server(todos), Management Tools(IIS Management Console and Management Service), Windows

6

Otra posibilidad que solucionó este problema para mí:

IIS -> Editar permisos -> Pestaña Seguridad -> Otorgue a los "Usuarios" los permisos apropiados (o IIS_IUSRS, dependiendo de su configuración)


6

Ehm Había movido mi sitio / archivos a una carpeta diferente. Sin cambiar la ruta en el sitio web de IIS.

Todos pueden reírse ahora.


6

Asegúrese de tener el grupo de aplicaciones configurado en la versión correcta del marco. También deberá asegurarse de que sus usuarios de aspnet, IIS_IUSRS o IUSR tengan acceso de lectura al directorio de la aplicación.


¿¿Cómo puedo hacer esto?? "asegúrese de que sus usuarios de aspnet o IUSR tengan acceso de lectura al directorio de la aplicación"
Yasmeen

55
vaya a C: \ Users \ Yasso \ Documents \ Visual Studio 2008 \ WebSites \ WebSite5 \ y asegúrese de que el directorio WebSite5 tenga permisos de lectura para el grupo IUSR e IIS_IUSRS. Para hacerlo, haga clic derecho en el directorio y seleccione propiedades, luego vaya a la pestaña de seguridad.
Jeff Turner

¡Pero no veo el grupo IUSR e IIS_IUSRS en el grupo o nombre de usuario! no se cual es el problema ??
Yasmeen

1
¿ves una opción para el servicio de red? de forma predeterminada, eso es lo que usará el grupo de aplicaciones cuando trabaje en su escritorio (si no recuerdo mal)
Jeff Turner

1
cuando va a la pestaña de seguridad, después de hacer clic derecho en la carpeta y seleccionar las propiedades. Haga clic en el botón "Agregar", que debería generar otra ventana con un botón "Editar". Haga clic en el botón "Editar" y escriba "Servicio de red" en el cuadro de texto. Debe encontrar al usuario y agregarlo a la lista. Luego, asegúrese de que el usuario tenga privilegios de lectura como mínimo.
Jeff Turner


4

Esto también me sucedió cuando tenía un documento predeterminado con el mismo nombre (como index.aspx) especificado tanto en mi archivo web.config como en mi sitio web IIS. Terminé eliminando la entrada del sitio web de IIS y mantuve la entrada web.config como se muestra a continuación:

<system.webServer>
  <defaultDocument>
    <files>
      <add value="index.aspx" />
    </files>
  </defaultDocument>...

4

A veces, a este mensaje le pueden faltar componentes en su entorno IIS, por ejemplo, un marco particular, o una característica de IIS como compresión dinámica, en lugar de permisos para web.config.

Si este es el caso, una solución puede ser instalar y usar el Instalador de plataforma de Microsoft e instalar los componentes que faltan; es posible que tenga que probar qué es exactamente lo que falta porque el registro de errores y el mensaje no le dicen.


NB: la compresión dinámica está en la lista de 'características de Windows' y no MPI
Simon_Weaver

@Simon_Weaver en realidad la compresión dinámica está en la lista de cosas que MPI instalará para usted y lo ha estado desde 2012, tal vez incluso antes. salud.
eagle779

4

Intente instalar el subcomponente 'Desarrollo de aplicaciones' de IIS como se menciona en este SO

  • Haga clic en "Botón de inicio" en el cuadro de búsqueda, ingrese "Activar o desactivar las funciones de Windows"
  • en la ventana de funciones, haga clic en "Servicios de información de Internet"
  • Haga clic en "Servicios de la World Wide Web"
  • Haga clic en "Características de desarrollo de aplicaciones"
  • Marque (habilite) las funciones. Lo comprobé todo menos CGI.

ingrese la descripción de la imagen aquí


3

Debe configurar el permiso para la carpeta de su sitio web o copiarlos en la carpeta wwwroot :) - Si establece el permiso, tenga 2 formas: + Haga clic derecho en la carpeta de su sitio web + O haga clic derecho en su sitio web en IIS => seleccione Editar permiso y agregue un permiso (IUSR - usuario predeterminado de iis) Buena suerte ;-)


En mi caso, iis 8, eran usuarios autenticados.
el vástago

3

En mi caso, se debe a que la ruta física de la aplicación apunta a una carpeta inexistente en IIS.

captura de pantalla de configuración de la aplicación


3

Tenía el problema lo he copiado mi archivo web.config abajo de prod, cambiado todo lo que no prod relacionada con excepción de las reglas de reescritura que fueron volver a escribir a la dirección http S .

Eliminó esas reglas y funcionó bien.


2

Bastante sencillo, IIS no tiene acceso a su web.config. Comenzaría sacando el sitio de su carpeta de documentos. Verifique que también tenga permisos r / w.


Muevo el sitio de Document a otro lugar pero aparece el mismo error
Yasmeen

2

Yo también tuve el problema similar y lo solucioné comentando algunas secciones en el archivo web.config.

El proyecto fue construido e implementado anteriormente en .Net 2.0. Después de migrar a .Net 3.5, comenzó a lanzar la excepción.

Resoluciones

Si su archivo de configuración contiene "< sectionGroup name =" system.web.extensions > ", coméntelo y ejecútelo ya que esta sección ya está disponible en Machine.config.


2

Puede obtener este error si tiene un error o problema de synax en su archivo web.config.

Para mí, fue un ampersand perdido en una URL que estaba usando en AppSettings.


También obtuve esto con una contraseña en una cadena de conexión que tenía un & - codificándolo a & amp; Me ayudó a superar este problema. Gracias, esta es la única respuesta aquí que no tiene que ver con los permisos.
Jeremy Thompson,

2

En la página de error de IIS 7.5, haga clic en 'Ver más información' en la parte inferior de la página y, en este caso, lo llevará al siguiente enlace de Microsoft:

http://support.microsoft.com/kb/942055

El 0x80070005 El Código de error parece estar relacionado con los permisos y, siguiendo los pasos de la Resolución 2, el Método 2 que asigna las cuentas correctas con permisos en las carpetas relevantes debería solucionarlo: pasé 3 días buscando una solución hasta que me encontré con él, trabajé inmediatamente después.


2

Tengo este problema con las unidades asignadas, IIS no funciona con las unidades asignadas. Simplemente use la unidad no asignada.


2

Explore la carpeta donde está almacenado su sitio web y vea que obtendrá una carpeta adicional "aspnet_client", elimine esa carpeta y funcionará para usted.

Intenté esto, mi problema está resuelto.

Si funciona para usted, hágalo como respuesta para que otro cuerpo también obtenga la solución.


1

Nada de esto funcionó para mí, pero finalmente tengo una solución que funcionó para mí:

elimine esta línea en web.config:

<compilation debug="true" targetFramework="4.5"/>

no elimines esta línea

<compilation debug="true"/>

1

Agregue la cuenta local IIS_IUSRS a la seguridad y dele acceso de lectura / ejecución. eso funciona en mi caso.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.