c# - enable - ASP.net Obteniendo el error "Acceso denegado a la ruta" al intentar cargar archivos en mi servidor web Windows Server 2008 R2
install asp net windows server 2012 (8)
¿Has mirado en Configuración de seguridad avanzada?
algo como debajo de los permisos de cambio de imagen de la carpeta a IIS_IUSRS
Tengo una aplicación web de asp.net que carga archivos a una carpeta específica en el servidor web. localmente, todo funciona bien, pero cuando despliegue la aplicación en el servidor web, comienzo a recibir el error "Acceso denegado" D: / Attachments / myfile.doc "está denegado". Le di al usuario "IIS AppPool" que la aplicación se está ejecutando 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 necesite un truco para que mi carga funcione. Realmente aprecio tu ayuda.
Gracias
El problema podría ser que el servicio de red no tiene derechos de lectura.
salucion
haga clic con el botón derecho en la carpeta de carga -> poperty''s -> security -> Edit -> add -> type: NETWORK SERVICE -> checkbox full control allow-> pulse ok o aplicar
Enfrenté este problema una vez y, en mi caso, la solución es cerrar cualquier proceso en el administrador de tareas que usa / accede a ese archivo .
Haga clic con el botón derecho en su carpeta en su servidor o máquina local y otorgue permisos completos a
IIS_IUSRS
Eso es.
Ir a la carpeta raíz
Haga clic derecho, haga clic en Propiedades
Elegir pestaña de seguridad
Haga clic en Editar
Haga clic en Agregar
Escribe ''EveryOne''
Haga clic en Aceptar
Echa un vistazo a Control total
Haga clic en Aceptar
Sé que esto 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 la configuración del atributo Archivo ayudó.
Intente establecer el atributo 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.
Si alguien se tropieza con esto, ya que es el primer resultado en google,
recuerde especificar el nombre de archivo también en el método SaveAs.
No funcionara
file_upload.PostedFile.SaveAs(Server.MapPath(SaveLocation));
Necesitas esto:
filename = Path.GetFileName(file_upload.PostedFile.FileName);
file_upload.PostedFile.SaveAs(Server.MapPath(SaveLocation + "//" + filename));
Asumí que el método SaveAs utilizará automáticamente el nombre de archivo cargado. Se mantuvo el error de "Acceso denegado". No es muy descriptivo del problema real
Su cuenta de asp.net {MACHINE}/ASPNET
no tiene acceso de escritura a esa ubicación. Esa es la razón por la cual está fallando.
Considere otorgar derechos de acceso al recurso a la identidad de solicitud ASP.NET.
Haga clic con el botón 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 te funciona, haz lo mismo con el Network Service
Ahora esto debería mostrar su cuenta local {MACHINENAME}/ASPNET
, luego establece el permiso de escritura para esta cuenta.
De lo contrario, si la aplicación se hace pasar por <identity impersonate="true"/>
, la identidad será el usuario anónimo (generalmente IUSR_MACHINENAME
) o el usuario autenticado de la solicitud.
O simplemente use una ubicación dedicada para almacenar archivos en ASP.NET, que es App_Data
. Para crearlo, haga clic con el botón 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");