Tengo un problema en el que intento eliminar mi archivo pero recibo una excepción.
if (result == "Success")
{
if (FileUpload.HasFile)
{
try
{
File.Delete(Request.PhysicalApplicationPath + app_settings.login_images + txtUploadStatus.Text);
string filename = Path.GetFileName(btnFileUpload.FileName);
btnFileUpload.SaveAs(Request.PhysicalApplicationPath + app_settings.login_images + filename);
}
catch (Exception ex)
{
Message(ex.ToString());
}
}
}
También debo tener en cuenta que la carpeta que estoy tratando de eliminar tiene control total sobre los servicios de red.
El mensaje de excepción completo es:
System.UnauthorizedAccessException: se deniega el acceso a la ruta 'C: \ Users \ gowdyn \ Documents \ Visual Studio 2008 \ Projects \ hybrid \ hybrid \ temp_loginimages \ enviromental.jpg'. en System.IO .__ Error.WinIOError (Int32 errorCode, String maybeFullPath) en System.IO.File.Delete (String path) en hybrid.User_Controls.Imgloader_Add_Edit_Tbl.btnUpdate_Click (Remitente de objetos, EventArgs e) en C: \ Users \ gowdy Documentos \ Visual Studio 2008 \ Proyectos \ hybrid \ hybrid \ User_Controls \ Imgloader_Add_Edit_Tbl.ascx.cs: línea 242
¿Algunas ideas?
fuente
Respuestas:
De acuerdo con el método File.Delete ...
Un
UnauthorizedAccessException
significa una de 4 cosas:fuente
Path is a directory.
gracias por este consejo :) Me ayudó.También tuve el problema, por lo tanto me topé con esta publicación. Agregué la siguiente línea de código antes y después de Copiar / Eliminar.
Eliminar
Copiar
fuente
Este es un problema antiguo, pero me encontré con él mientras buscaba. Resulta que me faltaba el componente de nombre de archivo real en la ruta de guardar para SaveAs ...
fuente
Cuando un usuario intenta conectarse a su sitio web, IIS asigna la conexión a la cuenta IUSER_ComputerName , donde ComputerName es el nombre del servidor en el que se ejecuta IIS. De forma predeterminada, la cuenta IUSER_ComputerName es un miembro del grupo Invitados. Este grupo tiene restricciones de seguridad. Intente acceder a IUSER_ComputerName a esa carpeta
aquí hay una muy buena respuesta descrita sobre la seguridad de IIS
Espero que esto ayude
fuente
Haga clic derecho en Visual Studio y haga clic en Ejecutar como administrador
fuente
Recibí el error porque no me di cuenta de que el destino debería ser un archivo. Tenía una carpeta como segundo parámetro (que funciona en cmd). y obtuve
Unhandled Exception: System.UnauthorizedAccessException: Access to the path is denied.
porque C #File.Move
quiere un archivo allí, no solo para el primer parámetro, sino también para el segundo, por lo que si coloca un directorio como segundo parámetro, está tratando de escribir un archivo comoc:\crp
cuando tiene un directorio llamadoc:\crp
.esto sería incorrecto
File.Move(args[0],"c:\\crp");
Entonces, esto sería correcto
File.Move(args[0],"c:\\crp\\a.a");
Lo mismo va para
File.Copy
fuente
Si este es un sitio web de IIS que tiene el problema, verifique la propiedad Identidad de la configuración avanzada para el grupo de aplicaciones que utiliza el sitio o la aplicación. Puede encontrar que está configurado en ApplicationPoolIdentity, y en ese caso, este es el usuario que tendrá que tener acceso a la ruta.
O puede seguir el estilo antiguo y simplemente configurar la Identidad en el Servicio de red y otorgarle al usuario del Servicio de red acceso a la ruta.
fuente
Debe modificar los privilegios de la carpeta de la que está tratando de eliminar / guardar. Haga clic con el botón derecho en la carpeta que contiene y use la pestaña Seguridad para permitir modificar los derechos del usuario con el que se ejecuta su aplicación.
fuente
Golpeé lo mismo. Verifique para asegurarse de que el archivo NO ESTÉ OCULTO.
fuente
También me enfrenté a este problema cuando mi servicio de ventana comenzó a arrojar la excepción
Entonces, como solución, verifiqué la cuenta de usuario asociada con mi servicio, como se muestra en la siguiente captura de pantalla
Entonces en mi caso fue SERVICIO DE RED
Y luego fui a las propiedades de la carpeta para verificar si la cuenta de usuario asociada también existe en su pestaña de permiso. Faltaba en mi caso y cuando lo agregué y solucionó mi problema.
Para obtener más información, consulte la siguiente captura de pantalla
fuente
El mismo problema para mí también, estaba señalando la carpeta en lugar del archivo.
así que asegúrate en ruta, da ruta + nombre de archivo
fuente
Verifique las propiedades de sus archivos. Si la opción de solo lectura está marcada, desactívela. Este fue mi problema personal con la excepción de acceso no autorizado.
fuente
Recibí este error y lo resolví en un momento. No sé por qué todas mis carpetas son de solo lectura, cancelé la de solo lectura y la apliqué. Sin embargo, todavía es de solo lectura. Así que moví el archivo a la carpeta raíz, funciona, es muy extraño.
fuente
Se produce una excepción UnauthorizedAccessException cuando el sistema operativo niega el acceso debido a un error de E / S o un error de seguridad.
Si está intentando acceder a un archivo o clave de registro, asegúrese de que no sea de solo lectura .
fuente
Si está utilizando BitDefender, existe una buena posibilidad de que su función de Archivos seguros bloquee su operación. Esta es una forma de protección contra ransomware que viene con algunas de sus versiones más avanzadas.
Asegúrese de otorgar acceso a su aplicación en BitDefender e intente nuevamente.
Puede encontrar más detalles en esta página de soporte de BitDefender .
fuente
Tuve el mismo problema en un sitio web recientemente movido en un servidor compartido. Resuelto a través de la configuración del panel de host web (DotNetPanel) verdadero "permitir permisos de escritura". Entonces, si está en un servidor compartido antes de revisar todo el código, vale la pena echarle un vistazo a la configuración del servidor y podría ahorrarle mucho tiempo.
fuente
Tenga en cuenta que si está intentando alcanzar una ruta de carpeta compartida desde su código, no solo necesita otorgar los permisos adecuados a la carpeta física a través de la pestaña de seguridad. También debe "compartir" la carpeta con el usuario del grupo de aplicaciones correspondiente a través de la pestaña Compartir
fuente
Estaba enfrentando este error porque
A veces, cuando
Combine
la ruta con el nombre del archivo yFileName = ""
Que se convierta en
Path Directory
no unafile
que es un problema que se ha mencionado anteriormenteasí que debes comprobarlo
FileName
asífuente
Tuve el error exacto al eliminar un archivo. Era un servicio de Windows que se ejecutaba bajo una cuenta de servicio que no podía eliminar un documento .pdf de una carpeta compartida a pesar de que tenía el control total de la carpeta.
Lo que funcionó para mí fue navegar a la pestaña Seguridad de la carpeta compartida> Avanzado> Compartir> Agregar.
Luego agregué la cuenta de servicio al grupo de administradores, apliqué los cambios y la cuenta de servicio pudo realizar todas las operaciones en todos los archivos dentro de esa carpeta.
fuente
Para aquellos que intentan crear una aplicación para UWP (Windows universal), los permisos de los archivos están mucho más restringidos y, en general, están denegados de manera predeterminada. También reemplaza los permisos de usuario del sistema. Básicamente, solo tendrá acceso a los archivos en
Puede leer más aquí para más detalles => https://docs.microsoft.com/en-us/windows/uwp/files/file-access-permissions
fuente
En mi caso, el problema era Norton. Mi programa interno no tiene la firma digital adecuada y cuando trató de eliminar un archivo, dio la excepción de acceso no autorizado.
Si le da una notificación, puede manejarlo desde allí. En mi caso no dio una notificación que noté. Así que aquí se explica cómo evitar que Norton bloquee el programa.
fuente
Yo también enfrenté el mismo problema al intentar hacer esto después de la implementación en el servidor:
Otorgué permiso en IIS a otro grupo, incluido el administrador, y mi problema se resolvió.
fuente
He encontrado que este error puede ocurrir en MODO DE DISEÑO en lugar de? modo de ejecución ... Si está haciendo algo como crear un miembro de la clase que requiere acceso a un archivo .INI o .HTM (archivo de configuración, archivo de ayuda) es posible que NO desee inicializar el elemento en la declaración, pero inicializarlo más tarde en FORM_Load () etc ... Cuando INICIAS ... Usa una declaración de protección IF:
Esto evitará que el Diseñador MSVS intente crear un archivo INI o HTM cuando esté en modo de diseño.
fuente
Recibí este error cuando intenté cambiar el nombre de una carpeta muy rápidamente después de que se había movido o creado.
Un simple lo
System.Threading.Thread.Sleep(500);
resolvió:fuente
En mi caso particular, repetidamente estaba creando y eliminando 10000 carpetas. Me parece que el problema estaba en que, aunque el método
Directory.Delete(path, true)
vuelve, el mecanismo subyacente del sistema operativo aún puede eliminar los archivos del disco. Y cuando empiezo a crear nuevas carpetas inmediatamente después de eliminar las antiguas, algunas de ellas siguen bloqueadas porque todavía no se han eliminado por completo. Y obtengo System.UnauthorizedAccessException: "Se deniega el acceso a la ruta".Usar
Thread.Sleep(5000)
afterDirectory.Delete(path, true)
resuelve ese problema. Estoy totalmente de acuerdo en que esto no es seguro, y no estoy alentando a nadie a usarlo. Me encantaría tener un mejor enfoque para resolver este problema y mejorar mi respuesta. Ahora solo estoy dando una idea de por qué puede ocurrir esta excepción.fuente
Primero solo verifique la ruta si falta el carácter de dos puntos (:) o no después de la letra de la unidad. Si no faltan los dos puntos, puede verificar si se otorga permiso de acceso / escritura para esa ruta. Tuve el mismo problema y solo me faltaban los dos puntos, el permiso y todo lo demás estaba bien.
funcionará bien pero,
le dará error de denegación de acceso.
fuente
Estaba tratando de usar System.IO.File.OpenWrite (ruta)
y no funcionó porque solo estaba pasando OpenWrite () una ruta a un directorio, pero requiere una ruta hasta el archivo que desea escribir. Por lo tanto, una ruta completa que incluye el nombre de archivo. Extensión al final debe pasarse a OpenWrite para evitar una excepción de acceso no autorizado
fuente
También me encontré con esta publicación por tratar el mismo problema. Parece que el archivo está en uso y, por lo tanto, no puede escribir en él. Aunque no es capaz de resolverlo, qué proceso lo está utilizando. Cerró la sesión del otro usuario que inició sesión en ese cuadro, no ve ningún usuario que lo tenga. Algún consejo rápido sobre cómo encontrar lo mismo.
Gracias, Lakshay (desarrollador)
fuente
Para resolver este problema, sigo el enfoque de Scot Hanselman en Debugging System.UnauthorizedAccessException (seguido a menudo por: Acceso al camino denegado) artículo, el código con el siguiente ejemplo es el siguiente:
fuente