asp.net iis - No se puede leer el archivo de configuración debido a permisos insuficientes




permissions to (25)

Recientemente he encontrado un error al intentar alojar mi sitio asp.net con IIS. He encontrado una solución que muchos juran por.

Solución:

  1. Agregue IIS_IUSRS con permiso de lectura en los archivos de la carpeta
  2. Cambiar el método de autenticación de IIS a BasicAuthentication
  3. actualizar el sitio web. Funcionará

( http://vivekthangaswamy.blogspot.com/2009/07/aspnet-website-cannot-read.html )

¿Qué agrego a mi archivo web.config aunque? Nunca he tenido que editarlo antes. Aquí está su contenido actual:

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
    <connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
   providerName="System.Data.SqlClient" />
 </connectionStrings>
 <system.web>
  <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
    </system.web>
</configuration>

Mi error es:

Error de configuración: no se puede leer el archivo de configuración debido a permisos insuficientes
Archivo de configuración: \? \ C: \ Users ***** \ Documents \ Visual Studio2010 \ WebSites \ PointsForTime \ web.config


Answers

Por alguna razón, su web.config está configurado como solo lectura. Desmarque la opción de solo lectura del archivo web.config.


Tuve lo que parecía ser el mismo problema de permisos en el archivo web.config .
Sin embargo, mi problema se debió a que IIS no pudo cargar el archivo de configuración porque contenía reglas de reescritura de URL y no había instalado el módulo de reescritura de URL de IIS en el nuevo servidor.

Solución: Instale el módulo de reescritura.
Espero que salve a alguien unas horas.


Asegúrese de que su archivo web.config no esté marcado como Solo lectura


Esto nos sucedió cuando la aplicación IIS tiene un Directorio virtual con una ruta física que contiene barras diagonales / en lugar de barras diagonales \ . Esto se hizo accidentalmente utilizando una API de administración de powershell para IIS durante nuestro proceso de entrega continua.

Ejemplo de configuración incorrecta - applicationHost.config

<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
    <virtualDirectory path="/" physicalPath="C:\inetpub\MySite/MyService" />
</application>

Asegúrese de que el atributo physicalPath no contenga barras diagonales / , solo barras diagonales \

Ejemplo de configuración corregida - applicationHost.config

<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
    <virtualDirectory path="/" physicalPath="C:\inetpub\MySite\MyService" />
</application>

compruebe si el archivo no está marcado como de solo lectura , a pesar del permiso IIS_IUSRS mostrará el mismo mensaje.


Resolví esto agregando permiso de lectura a la carpeta para el usuario del grupo de aplicaciones (WIN SERVER 2008 R2): C: \ Windows \ System32 \ inetsrv \ config

Un poco de historia: nuestro servidor ha sido pirateado utilizando el error clásico donde el usuario de la aplicación tenía más permisos de los que debería (administrador local).

Para solucionarlo, creamos un nuevo usuario de dominio que solo tenía permisos en la carpeta de la aplicación, con los derechos mínimos necesarios y lo asignamos como usuario del grupo de aplicaciones. De lo que nos topamos en el tema y esto fue solución a nuestros problemas.


No tienes que cambiar nada en tu web.config.

El problema son los permisos del sistema de archivos. Sus permisos de archivo no permiten que el usuario IIS_IUSRS acceda a web.config (o probablemente a cualquiera de los archivos). Cambie sus permisos de archivo en Windows para permitir que la cuenta IIS_IUSRS acceda a ella.


Tuve el mismo problema y después de hacer todas las cosas escritas aquí como respuestas, todavía se reproducía. La segunda mitad del problema fue el hecho de que .NET se desactivó en "Activar o desactivar las características de Windows"


La solución aceptada no fue para mí. Uso un repositorio de Git y se clona en la siguiente carpeta.

c:\users\myusername\source\repos\myWebSite

Hice un nuevo sitio web de IIS y lo señalé en el camino. Que no tenía los permisos iis_iusrs sugeridos en la solución aceptada. Cuando agregué los permisos todavía no funcionó.

Solo comenzó a funcionar cuando le di los siguientes permisos al grupo 'Usuarios' y la herencia en cascada los permisos a web.config. Probablemente debería haberlo aplicado solo a web.config para reducir el área de superficie de ataque.


Nota del editor: ¡Hacer lo que dice esta respuesta es DANGEROUS ! La cuenta LocalSystem es un ...

Cuenta completamente confiable, más que la cuenta del administrador. No hay nada en una sola casilla que esta cuenta no pueda hacer, y tiene el derecho de acceder a la red como la máquina (esto requiere Active Directory y otorgar los permisos de la cuenta de la máquina a algo)

Cambiar la identidad de ApplicationPoolIdentity a LocalSystem hizo el trabajo;).

Estoy usando win7 64 con IIS 7.5

más sobre la identidad del grupo de aplicaciones en IIS 7.5 y gana 7


Vaya a la carpeta principal, haga clic con el botón derecho y seleccione Propiedades . Seleccione la pestaña Seguridad , edite los permisos y Agregar . Haga clic en Avanzado y en Buscar ahora . Seleccione IIS_IUSRS y haga clic en Aceptar y Aceptar de nuevo. Asegúrate de que tienes cheque de escritura . Haga clic en Aceptar y Aceptar de nuevo.

¡Trabajo hecho!


Para mí, el error apareció durante la depuración en mi máquina local y resultó estar relacionado con la base web.config, que es iniciado por .NET Framework al compilar el sitio web. Mi archivo C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ web.config tenía un elemento no reconocido (folderLevelBuildProviders). Arreglando esto arreglamos el error 500.19.

Vea esto: IIS Manager no puede configurar .NET Compilation en aplicaciones .NET 4


Teníamos un sitio web que se ejecuta con una identidad específica en el conjunto de aplicaciones, solo después de dar a ese usuario acceso de lectura a la carpeta que contiene web.config funcionaría. Rastreamos esto después de agregar el usuario 'todos' con lectura y todo funcionó bien.


Haga que el archivo sea accesible para el grupo IIS_IUSRS . Haga clic derecho en su web.config, expanda las propiedades y, en la pestaña de seguridad, agregue IIS_IUSRS. Déle al grupo acceso de lectura / escritura.

Cuando el grupo NO esté disponible, reemplace IIS_IUSRS por ComputerName \ IIS_IUSRS


También estaba recibiendo el mensaje "No se puede leer el archivo de configuración debido a permisos insuficientes". Resulta que las restricciones ISAPI y CGI en IIS para ASP.NET 4.0 de 32 bits y 64 bits se configuraron para denegar. Marcando ambos a Permitido solucioné mi problema.


No hay problema con su web.config . Su sitio web se ejecuta bajo un proceso. En iis puedes definir la identidad de ese proceso. La identidad que, el grupo de aplicaciones de su sitio web se ejecuta como ( Servicios de red, Sistema local , etc.), debe tener permiso para acceder y leer el archivo web.config.

Actualizar:

Esta respuesta actualizada es la misma que la anterior, pero un poco más larga, simple y mejorada.

En primer lugar : no tiene que cambiar nada en su archivo de configuración. Esta bien El problema es con los permisos de archivos de Windows .

Este problema ocurre porque su aplicación no puede acceder y leer el archivo web.config .

Hacer el archivo accesible al grupo IIS_IUSRS . Simplemente haga clic derecho en web.config y haga clic en propiedades , en la pestaña de seguridad , agregue IIS_IUSRS .

Entonces, ¿qué es esta cosa IIS_IUSRS?

Su sitio web es como un archivo exe . Al igual que cualquier archivo exe, debe ser iniciado por un usuario y se ejecuta de acuerdo con los permisos asignados a ese usuario.

Cuando se inicia su sitio en IIS , el Grupo de aplicaciones de su sitio web está asociado con un usuario ( Servicios de red, Sistema local , etc.) (y se puede cambiar en IIS)

Entonces, cuando dice IIS_IUSRS , significa cualquier usuario ( Servicios de red, Sistema local , etc.) con el que se ejecute su sitio.

Y como @Seph mencionó en el comentario a continuación : Si su computadora está en un dominio , recuerde que el grupo IIS_IUSRS es un grupo local . También asegúrese de que cuando intenta encontrar a este usuario, verifique la ubicación, debe configurarse en una computadora local y no en un dominio corporativo.


Utilicé subst para crear una asignación de D: a C: para mantener la misma configuración que otros desarrolladores en el equipo. Esto también me dio los mismos errores que se describen. Eliminando esto lo arreglé para mí.


  1. Ir a IIS, (sitios)
  2. Haga clic derecho en el proyecto dentro de los sitios. introduzca la descripción de la imagen aquí

y haga clic en el permiso de edición.

  1. Ve a la seguridad.

  2. Haga clic en el botón Editar.

  3. haga clic en el botón Agregar. escriba COMPUTER_NAME \ IIS_USERS

    o

  4. haga clic en avanzar.

  5. Haga clic en el botón Buscar ahora.

    y hay opción para elegir. elija IIS_USERS y haga clic en ok ... ok .... ok.



Tenía este problema con una aplicación virtual. Todos los permisos fueron establecidos. IIS_IUSRS, AppPoolIdentity y luego dio acceso completo a Todos. Nada funcionó. Reiniciado apppool, sitio y IIS pero No ir.

Se eliminó la aplicación virtual, se volvió a agregar desde cero y comenzó a funcionar.

Ojalá supiera lo que lo resolvió.


En mi caso, estaba tratando de alojar páginas desde una unidad asignada (subst). El problema es que el subst se ejecutó bajo mi cuenta y el usuario de IIS no puede ver la misma unidad


A veces, si es un servidor nuevo, necesita configurar o instalar la función ASP.NET en IIS para que pueda leer su archivo web.config.

En mi caso esta fue la razón.


Di permiso y utilicé ICACLS.exe pero no funcionó. Luego cambié el camino físico y funcionó con éxito.

(IIS 8.5 windows 2012 R2)


Haga clic derecho en Web.Config => Tab Seguridad => Botón Editar => Botón Agregar => Botón Avanzado => Botón Buscar ahora => En los resultados de búsqueda, seleccione su grupo (en nuestro caso "IIS_IUSRS") => Ok => Ok => De acuerdo






asp.net iis-7 file-permissions