ASP.net Obtener el error “Acceso denegado a la ruta de acceso” al intentar cargar archivos a mi servidor web de Windows Server 2008 R2

Tengo una aplicación web asp.net que carga archivos a una carpeta específica en el servidor web. localmente todo funciona bien, pero cuando despliego la aplicación al servidor web, empiezo a obtener el error “Acceso a la ruta” D: \ Attachments \ myfile.doc “denegado”. Le di al usuario “IIS AppPool” que la aplicación se ejecuta con permiso completo en la carpeta. Incluso le di a “Todos” permisos completos, pero con el mismo error.

Agregué la carpeta a la lista de Excepciones del Antivirus, pero con el mismo resultado. Estoy empezando a sospechar que tal vez Windows Server 2008 R2 necesita un truco para que mi carga funcione. Realmente aprecio tu ayuda.

Gracias

Su cuenta asp.net {MACHINE}\ASPNET no tiene acceso de escritura a esa ubicación. Esa es la razón por la que está fallando.

Considere otorgar derechos de acceso al recurso a la identidad de la solicitud ASP.NET.

Haga clic derecho en la carpeta de descarga Properties > Security Tab > Edit > Add > locations > choose your local machine > click OK > Type ASPNET below "Enter the object name to select" > Click Check Names Marque las casillas para el acceso deseado ( Full Control ) . Si no funciona, haga lo mismo con el Network Service

Ahora esto debería mostrar su cuenta {MACHINENAME}\ASPNET local, luego configura el permiso de escritura en esta cuenta.

De lo contrario, si la aplicación se hace pasar por , la identidad será el usuario anónimo (generalmente IUSR_MACHINENAME ) o el usuario de la solicitud autenticada.


O simplemente use una ubicación dedicada para almacenar archivos en ASP.NET que es App_Data . Para crearlo, haga clic derecho en su proyecto ASP.NET (en Visual Studio) Add > Add ASP.NET Folder > App_Data . Entonces podrás guardar datos en esta ubicación:

 var path = Server.MapPath("~/App_Data/file.txt"); System.IO.File.WriteAllText(path, "Hello World"); 

Haga clic derecho en su carpeta en su servidor o máquina local y otorgue permisos completos a

IIS_IUSRS

Eso es.

el problema podría ser que el servicio de red no tiene derechos de lectura

salutación:

Haga clic con el botón derecho en su carpeta de carga -> poperty’s -> seguridad -> Editar -> agregar -> escriba: SERVICIO DE RED -> checkbox control total permitir-> presione aceptar o aplicar

Si alguien tropieza con esto, ya que es el primer resultado en Google,

recuerde especificar el nombre del archivo también en el método SaveAs.

No funcionará

 file_upload.PostedFile.SaveAs(Server.MapPath(SaveLocation)); 

Necesitas esto:

 filename = Path.GetFileName(file_upload.PostedFile.FileName); file_upload.PostedFile.SaveAs(Server.MapPath(SaveLocation + "\\" + filename)); 

Supuse que el método SaveAs usará automáticamente el nombre del archivo cargado. Se mantuvo el error “Acceso denegado”. No muy descriptivo del problema real

Me enfrenté a este problema una vez y en mi caso la solución es cerrar cualquier proceso en el administrador de tareas que utiliza / accede a ese archivo .

¿Has buscado en Configuración de seguridad avanzada?

algo como debajo de la imagen cambia los permisos de la carpeta a IIS_IUSRS

enter image description here

Sé que es tarde para el juego, pero quería compartirlo en caso de que ayude a alguien.

Es posible que su situación exacta no se aplique, sin embargo, tuve una situación similar y me ayudó a configurar el atributo Archivo.

Intenta establecer el atributo de archivo en Normal:

 var path = Server.MapPath("~/App_Data/file.txt"); File.SetAttributes(path, FileAttributes.Normal); System.IO.File.WriteAllText(path, "Hello World"); 

Espero que esto ayude a alguien.

Ir a la carpeta raíz

Haga clic derecho, haga clic en Propiedades

Elige seguridad de pestaña

Haga clic en Editar

Haga clic en Agregar

Escriba ‘EveryOne’

Haga clic en Aceptar

Verificación de control total

Haga clic en Aceptar