2012-04-21 215 views
8

Acabo de instalar IIS en Windows XP.Se deniega el acceso a la ruta 'c: inetpub wwwroot myapp App_Data'

Cuando intento ejecutar una aplicación, me sale un error:

Access to the path 'c:\inetpub\wwwroot\myapp\App_Data' is denied. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.UnauthorizedAccessException: Access to the path 'c:\inetpub\wwwroot\myapp\App_Data' is denied.

ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6) that is used if the application is not impersonating. If the application is impersonating via , the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user.

To grant ASP.NET access to a file, right-click the file in Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.

Source Error:

Line 70: Protected Sub cmbSettingFiles_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbSettingFiles.SelectedIndexChanged
Line 71: Dim doc As XmlDocument = New XmlDocument()
Line 72: doc.Load(Path.Combine(basePath, cmbSettingFiles.SelectedValue)) Line 74: Dim settingsNode As XmlNode = doc.SelectSingleNode("/settings")

Source File: C:\myapp\install\install.aspx.vb Line: 72

He tratado permiso de rejilla al hacer esto:

To grant ASP.NET access to a file, right-click the file in Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.

Pero persiste el error.

¿Tiene esto algo que ver con mi código?

¿Cómo puedo resolver esto?

EDITAR

He resuelto el problema en mi máquina dev, pero todavía estoy consiguiendo el error en mi servidor web.

Gracias.

+0

Soy el único que usa el archivo en mi máquina de desarrollo, y cuando lo cargo mi servidor en línea, pasa lo mismo también. – Smith

+0

¿Puedo preguntar por qué el voto abajo? – Smith

Respuesta

8

Try to go to App_Data folder property and add ASPNET user with read and write privileges

Ref:
How to assign correct permissions to App_Data folder of WebMail Pro ASP.NET
Permissions on APP_DATA Folder
ASP/ASP.NET Best way to handle write permissions?

Si no se soluciona el problema, entonces comprobar si los archivos XML no están abiertos por otro subproceso utilizando estos archivos de configuración .. y proporcionan una cierta más detalles si aún persiste.

+0

hola, me pueden ayudar a ver el nuevo error. Estoy recibiendo el mismo error en el servidor web – Smith

1

¿Estás seguro de que estás agregando el usuario correcto? ¿Ha marcado para ver qué usuario está configurado para su grupo de aplicaciones?

Este error también ocurrirá si no puede leer el archivo por alguna razón; como el archivo está bloqueado o usado por otra aplicación. Como se trata de una aplicación web ASP.NET, querrá asegurarse de no realizar ninguna acción que requiera que el archivo se bloquee; a menos que pueda garantizar que solo tendrá un usuario en su página a la vez.

¿Puedes publicar un ejemplo de cómo accedes al archivo? ¿Qué tipo de archivo es? Los fragmentos de código te ayudarán a obtener una respuesta más exacta.

4

considerar si el archivo es de sólo lectura, entonces los parámetros adicionales pueden ayudar con FileStream

using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read)) 
1

tuve una situación similar. Estoy usando TFS para el control de código fuente. Lo que encontré es que cuando se registró, hizo los archivos de solo lectura. Esto causó el error anterior en mi servicio donde los estaba abriendo leer/escribir. Una vez que los revisé para editarlos. Todo funcionó bien. Estoy considerando intentar abrirlos solo en el servicio. Creo que una vez que se publican en el servidor de producción, esto no es un problema. Solo en el entorno de desarrollo. He visto problemas similares con los servicios que usan Entity Framework. Si el archivo .svc está registrado, no puede hacer actualizaciones a la base de datos a través de EF.

+1

Una razón más entre muchas para no usar TFS ... –

0

Intente otorgar permiso al usuario de SERVICIO DE RED.

1

Intenté agregar ASP.net v4.0 con todos los permisos, agregué el usuario de SERVICIO DE RED pero nada me ayudó. Por fin, se agregó el derecho de MODIFICAR del usuario de DefaultAppPool en la carpeta App_Data, problema resuelto.

+0

Esto funcionó para mí también. Un nuevo servidor y mi paquete de implementación ni siquiera crearon una carpeta app_data. Lo creé y luego agregué los derechos de modificación a DefaultAppPool – Luke

0

favor Ejecutar Visual Studio con el administrador de privilege..This cuestión es resuelto para mí ..

acceso a la ruta se niega C: \ inetpub \ wwwroot se niega indica que el sitio web de autoservicio puede no puede acceder a una carpeta específica en el servidor donde está instalado. Esto podría deberse a que la ubicación no existe o porque el usuario autenticador no tiene permisos aplicados para escribir en esta ubicación.

0

Otra razón podría ser porque el archivo está vacío donde intenta escribir y por eso no puede encontrarlo. solo otra razón por la cual ocurre este error.

2

Para aquellos que ejecutan IIS en Windows Server:

Por defecto, el usuario de IIS no tiene permisos de escritura para la carpeta wwwroot. Esto puede resolverse otorgando permisos completos al usuario IIS_IUSRS para wwwroot.

  1. Abra el Explorador de archivos y vaya a C:/inetpub/
  2. Haga clic derecho sobre wwwroot y haga clic en "Propiedades"
  3. vaya a la pestaña Seguridad y haga clic en "Editar ..." para editar los permisos
  4. Buscar y seleccione el usuario de IIS. En mi caso, se llamó IIS_IUSRS ([server name]\IIS_IUSRS).
  5. Seleccione la casilla de verificación "Permitir" para todos los permisos.
Cuestiones relacionadas