Pregunta

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 obtenga 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)

Di por completo el control a esta carpeta (guarda) a network service y iis_iusrs, incluso dio el control total a everyone Pero aún obteniendo esta excepción. Traté de dar acceso a través de Explorer y a través del gerente de IIS, todavía no hay suerte

Lo estoy haciendo en Windows Server 2008 R2 e IIS 7.5, ¿a quién necesito dar acceso?

Gracias

¿Fue útil?

Solución

Debe averiguar en el grupo de aplicaciones para el sitio web cuál es la identidad en la que se ejecuta (por defecto, esto es Application Pool Identity) y otorgue que los permisos correctos.

Otros consejos

El acceso a la ruta 'c: inetpub wwwroot mysite images saveHere' es denegado

Lea el mensaje con cuidado. Está intentando guardar en un archivo que tenga el mismo nombre que el directorio. Eso no puede funcionar, no puede sobrescribir un directorio lleno de archivos con un solo archivo nuevo. Eso causaría la pérdida de datos no diagnosticable, "el acceso a la ruta se niega" es el sistema de archivos que lucha para evitar que eso suceda.

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

Debe usar un nombre como 'c: inetpub wwwroot mysite images savehere mumble.jpg'. Considerar Path.combine () para generar de manera confiable el nombre de la ruta.

Tenía 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 aplicaciones 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 necesite dar 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 era que el archivo al que estaba tratando de acceder era solo lectura, ya que se copió de un archivo de plantilla que era lectura.

u003Cfacepalm />

Obtuve este problema cuando intento guardar el archivo sin configurar 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));

Mi problema era que tenía que pedir acceso a lectura solo:

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

Agregue el permiso de control completo de IIS_IUSITS a su carpeta. Encuentra esta opción desde la pestaña de seguridad en las propiedades de la carpeta.find this option and user in this image

¿Qué identidad es su grupo de aplicaciones para la aplicación web que se ejecuta, para solucionar problemas, intente crear un nuevo grupo de aplicaciones con el servicio de red Say como su identidad y hacer 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 cargar su archivo en una dirección de red que contenía un "participación oculta", a saber:

Mynetworkserver c $ somedirectoryorother

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

Había verificado en qué usuario se estaba ejecutando mi sitio IIS, le dio a este usuario permisos completos a este directorio en el "Mynetworkserver"Servidor, etc., etc., pero nada funcionó.

La razón (¡por supuesto!) Es que solo los administradores pueden "ver" estas acciones de impulso oculto.

Mi solución era simplemente crear una participación "normal" para

Mynetworkserver somedirectoryorother

Y esto se deshizo del error "Acceso a la ruta ... se niega". El fileupload pudo ejecutar con éxito el comando

fileUpload.SaveAs(networkFilename);

¡Espero que esto ayude a otros usuarios que cometen el mismo error que cometí!

Tenga en cuenta también que si está cargando archivos grandes (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 necesita hacer:Cargar archivos grandes en ASP.NET

Resolví con esta configuración:

IIS> Pools de aplicaciones> [su sitio]> Configuración avanzada ...> Identidad> Accedimiento incorporado> LocalSystem

Mi problema fue algo así:

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

Pero en lugar de usar ruta, debo usar archivo. Fullname ... No sé si va a ayudar a alguien más, ¡solo pasando mi propia experiencia con este erro dada!

  1. Cambie la configuración de la cuenta incorporada 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 de modo clásico).

Quizás te ayude.

string tempDirectoryPath = @"C:\Users\HOPE\Desktop\Test Folder";
string zipFilePath = @"C:\Users\HOPE\Desktop\7za920.zip";
Directory.CreateDirectory(tempDirectoryPath);
ZipFile.ExtractToDirectory(zipFilePath, tempDirectoryPath);

Hacer directorio ahorrar ser directorio virtual y dar permiso de lectura/escritura del panel de control

Tenía un directorio con el mismo nombre que el archivo que estaba tratando de escribir, para que las personas también puedan tener en cuenta eso.

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

Después de varios sin éxito iisreset invocaciones, remedié esta situación por reiniciado mi máquina.

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

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

Agregué una regla para permitir usuarios anónimos.

.NET Authorization Rules

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 fuera. Utilicé la opción de reemplazar el archivo existente y eso hizo el truco para mí. Sé que esta no es la forma más eficiente, pero funciona y toma menos de 15 segundos.

Tuve muchos problemas con esto, específicamente relacionado con mi código ejecutándose localmente, pero cuando necesitaba ejecutarlo en IIS estaba lanzando este error. Descubrí que agregar un cheque a mi código y dejar que la aplicación creara la carpeta en la primera ejecución solucionó el problema sin tener que meterse con las autorizaciones de carpetas.

algo como esto antes de llamar a su método que usa la carpeta

bool exists = System.IO.Directory.Exists("mypath");

        if (!exists)
            System.IO.Directory.CreateDirectory("mypath");

Creé un DIR virtual con permiso completo y agregué la fuente FFMPEG y los archivos de video allí, por lo que finalmente tenía sentido, ya que cualquiera puede ser asesorada por cualquiera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top