Se niega el acceso a la ruta

Sé que esta pregunta se hizo muchas veces aquí, pero no puedo encontrar una solución a mi problema. Estoy tratando de guardar la imagen en la carpeta en .net c # pero obtengo esta excepción:

Access to the path 'C:\inetpub\wwwroot\mysite\images\savehere' is denied.The error occured at mscorlib because at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy) at System.IO.FileStream..ctor(String path, FileMode mode) 

Le di el control total a esta carpeta (savehere) al network service y iis_iusrs , incluso le di el control total a everyone pero iis_iusrs recibiendo esta excepción. Traté de dar acceso a través del explorador y a través del administrador de IIS, todavía no tuve suerte

Lo estoy haciendo en Windows Server 2008 R2 e IIS 7.5. ¿A quién debo dar acceso?

Gracias

Debe averiguar desde el grupo de aplicaciones para el sitio web cuál es la identidad con la que se está ejecutando (de manera predeterminada, esta es la Application Pool Identity ) y otorgarle los permisos correctos.

Se deniega el acceso a la ruta ‘C: \ inetpub \ wwwroot \ mysite \ images \ savehere’

Lee el mensaje cuidadosamente. Está intentando guardar en un archivo que tiene el mismo nombre que el directorio. Eso no puede funcionar, no puede sobrescribir un directorio lleno de archivos con un único archivo nuevo. Eso causaría la pérdida de datos no diagnosticables, “El acceso a la ruta es denegado” es el sistema de archivos luchando para evitar que eso suceda.

El mensaje de excepción no es ideal, pero viene directamente del SO y están hechos en piedra. El marco a menudo agrega controles adicionales para generar mejores mensajes, pero esta es una prueba costosa en una red. Perf también es una característica.

Necesita usar un nombre como ‘C: \ inetpub \ wwwroot \ mysite \ images \ savehere \ mumble.jpg’. Considere Path.Combine () para generar confiablemente el nombre de ruta.

Estaba teniendo el mismo problema al intentar crear un archivo en el servidor (en realidad, un archivo que es una copia de una plantilla).

Aquí está el mensaje de error completo:

 {ERROR} 08/07/2012 22:15:58 - System.UnauthorizedAccessException: Access to the path 'C:\inetpub\wwwroot\SAvE\Templates\Cover.pdf' is denied. 

Agregué una nueva carpeta llamada Templates dentro de la carpeta de la aplicación IIS. Una cosa muy importante en mi caso es que necesitaba dar el permiso de escritura (Gravar) para el usuario de IUSR en esa carpeta. Es posible que también deba proporcionar el Network Service y ASP.NET v$.# El mismo permiso de Escritura.

enter image description here

Después de hacer esto, todo funciona como se esperaba.

Tuve exactamente el mismo problema.

La solución fue que el archivo al que intentaba acceder era de solo lectura , ya que se copió de un archivo de plantilla que era de solo lectura.

Obtuve este problema cuando bash guardar el archivo sin establecer el nombre del archivo.

Código antiguo

 File.WriteAllBytes(@"E:\Folder", Convert.FromBase64String(Base64String)); 

Código de trabajo

 File.WriteAllBytes(@"E:\Folder\"+ fileName, Convert.FromBase64String(Base64String)); 

Qué identidad es su grupo de aplicaciones para la aplicación web ejecutándose, para solucionar problemas, intente crear un nuevo grupo de aplicaciones con el servicio de red como identidad y haga que su aplicación web use ese nuevo grupo de aplicaciones que creó y vea si el error persiste.

El siguiente consejo no es una respuesta a la pregunta original de este hilo, pero podría ayudar a otros usuarios que terminan en esta página web, después de cometer el mismo error estúpido que acabo de hacer …

Estaba intentando obtener un control ASP.Net FileUpload para subir su archivo a una dirección de red que contenía un “recurso compartido oculto “, a saber:

\ MyNetworkServer \ c $ \ SomeDirectoryOrOther

No lo entendí Si ejecuté la página web en modo Debug en Visual Studio, funcionaría bien. Pero cuando se implementó el proyecto, y se estaba ejecutando a través de un usuario del grupo de aplicaciones, se negó a encontrar este directorio de red.

Había comprobado en qué usuario se estaba ejecutando mi sitio de IIS, le otorgué permisos completos a este usuario en el servidor ” MyNetworkServer “, etc., pero no funcionó.

La razón (¡por supuesto!) Es que solo los administradores pueden “ver” estos recursos compartidos de disco ocultos.

Mi solución fue simplemente crear una participación “normal” para

\ MyNetworkServer \ SomeDirectoryOrOther

y esto eliminó el error “Acceso a la ruta … denegado”. El FileUpload fue capaz de ejecutar con éxito el comando

 fileUpload.SaveAs(networkFilename); 

Espero que esto ayude a otros usuarios que cometen el mismo error que yo.

Tenga en cuenta también que si está cargando archivos de gran tamaño (más de 4Mb), entonces IIS7 requiere que modifique el archivo web.config en dos lugares. Haga clic en este enlace para leer lo que debe hacer: cargar archivos de gran tamaño en ASP.Net

Mi problema fue que solo tuve que pedir acceso de lectura:

 FileStream fs = new FileStream(name, FileMode.Open, FileAccess.Read); 

agregue IIS_IUSERS permiso de control total a su carpeta. encuentra esta opción desde la pestaña de seguridad en las propiedades de la carpeta. encuentra esta opción y usuario en esta imagen

Mi problema era algo como eso:

 FileStream ms = new FileStream(path, FileMode.Open, FileAccess.ReadWrite); 

pero en lugar de usar path, debería usar File.FullName … No sé si va a ayudar a alguien más, ¡simplemente pasando mi propia experiencia con este error dado!

  1. Cambie la configuración de la cuenta integrada a la cuenta personalizada e ingrese el nombre de usuario y la contraseña del otro servidor.

  2. Mantenga la configuración como integrada (en lugar del modo clásico).

Lo resolví con esta configuración:

IIS> Grupos de aplicaciones> [su sitio]> Configuración avanzada …> Identidad> Conteo integrado> LocalSystem

Haga que Directory sea el directorio virtual y otorgue permiso de lectura / escritura desde el panel de control

Tenía un directorio con el mismo nombre que el archivo que intentaba escribir, por lo que las personas también pueden tenerlo en cuenta.

Encontré este problema mientras desarrollaba en mi estación de trabajo local.

Después de varias invocaciones infructuosas de iisreset , remediaba esta situación reiniciando mi máquina.

En retrospectiva, un controlador de archivo abierto puede haber estado causando problemas.

En mi caso, tuve que agregar una Regla de Autorización .NET para el sitio web en IIS.

Agregué una regla para permitir usuarios anónimos.

Reglas de autorización .NET

Tuve el mismo problema pero lo solucioné guardando el archivo en una ubicación diferente y luego copiando el archivo y pegándolo en la ubicación donde quería que estuviera. Utilicé la opción para reemplazar el archivo existente y eso me solucionó el problema. Sé que esta no es la manera más eficiente pero funciona y toma menos de 15 segundos.

Creé un directorio virtual con permiso completo y agregué los archivos fuente y de video de ffmpeg allí, así que finalmente tuvo sentido ya que cualquiera puede acceder a él.