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 (guardar aquí) network service
e iis_iusrs
, incluso le di el control total, everyone
pero aún obtengo esta excepción. Traté de dar acceso a través del explorador y el administrador de IIS, todavía no tuve suerte
Lo estoy haciendo en Windows Server 2008 R2 e IIS 7.5, ¿a quién necesito para dar acceso?
Gracias
Respuestas:
Debe averiguar en el grupo de aplicaciones del sitio web cuál es la identidad con la que se ejecuta (de forma predeterminada, esto es
Application Pool Identity
) y otorgarle los permisos correctos.fuente
ApplicationPoolIdentity
, ¿cómo le doy permisos?IIS APPPOOL\DefaultAppPool
usuario. Ver este artículo en el sitio oficial de IIS: learn.iis.net/page.aspx/624/application-pool-identitiesDefaultAppPool
y le difull control
permisos, pero aúneveryone
el control total. Si otorgamoseveryone
el control total, ¿incluso entonces debemos otorgar acceso aDefaultAppPool
? Es confuso.Images
directorio para el usuario / identidad que ejecuta el sitio web (deberá preguntarle a su proveedor de host sobre eso).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 solo archivo nuevo. Eso causaría una pérdida de datos no diagnosticable, "El acceso a la ruta está denegado" es el sistema de archivos que lucha para evitar que eso suceda.
El mensaje de excepción no es ideal, pero viene directamente del sistema operativo 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.
Debe usar un nombre como 'C: \ inetpub \ wwwroot \ mysite \ images \ savehere \ mumble.jpg'. Considere Path.Combine () para generar de manera confiable el nombre de la ruta.
fuente
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:
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 otorgar el permiso Write (Gravar) para el usuario IUSR en esa carpeta. También puede ser necesario para darNetwork Service
yASP.NET v$.#
el mismo permiso de escritura.Después de hacer esto, todo funciona como se esperaba.
fuente
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.
<facepalm />
fuente
Recibí este problema cuando intento guardar el archivo sin establecer el nombre del archivo.
Código antiguo
Código de trabajo
fuente
Mi problema era que solo tenía que solicitar acceso de lectura:
fuente
¿Cuál es la identidad de su grupo de aplicaciones para la aplicación web que se está ejecutando?
fuente
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 estúpido error que acabo de cometer ...
Intentaba obtener un control ASP.Net FileUpload para cargar su archivo a una dirección de red que contenía un "recurso compartido oculto ", a saber:
\ MyNetworkServer \ c $ \ SomeDirectoryOrOther
No lo entendi. Si ejecutara la página web en modo de depuración en Visual Studio, funcionaría bien. Pero cuando el proyecto se implementó y se ejecutó a través de un usuario del grupo de aplicaciones, se negó a encontrar este directorio de red.
Verifiqué bajo qué usuario se estaba ejecutando mi sitio IIS, le di a este usuario permisos completos para este directorio en el servidor " MyNetworkServer ", etc., pero nada funcionó.
La razón (¡por supuesto!) Es que solo los administradores pueden "ver" estos recursos compartidos ocultos.
Mi solución fue simplemente crear un recurso compartido "normal" para
\ MyNetworkServer \ SomeDirectoryOrOther
y esto eliminó el error "Acceso a la ruta ... denegado". FileUpload pudo ejecutar con éxito el comando
¡Espero que esto ayude a otros usuarios que cometen el mismo error que yo!
Tenga en cuenta también que si está cargando archivos grandes (más de 4Mb), IIS7 requiere que modifique el archivo web.config en dos lugares. Haga clic en este enlace para leer lo que debe hacer: cargar archivos grandes en ASP.Net
fuente
agregue el permiso de control total IIS_IUSERS a su carpeta. encontrará esta opción en la pestaña de seguridad en las propiedades de la carpeta.
fuente
Resolví con esta configuración:
fuente
Mi problema era algo así:
pero en lugar de usar la ruta, debería usar File.FullName ... No sé si va a ayudar a alguien más, ¡solo paso mi propia experiencia con este error!
fuente
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.
Mantenga la configuración como integrada (en lugar de modo clásico).
fuente
Quizás te ayude.
fuente
Haga que el Directorio guarde aquí para que sea un directorio virtual y otorgue permisos de lectura / escritura desde el panel de control
fuente
Tenía un directorio con el mismo nombre que el archivo que estaba tratando de escribir, por lo que la gente también puede buscarlo.
fuente
Encontré este problema mientras desarrollaba en mi estación de trabajo local.
Después de varias
iisreset
invocaciones fallidas , remedié esta situación reiniciando mi máquina.En retrospectiva, un identificador de archivo abierto puede haber estado causando problemas.
fuente
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.
fuente
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 sirvió. Sé que esta no es la forma más eficiente, pero funciona y lleva menos de 15 segundos.
fuente
Tuve muchos problemas con esto, específicamente relacionado con mi código que se ejecuta localmente, pero cuando necesitaba ejecutarlo en IIS estaba arrojando 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 las carpetas.
algo así antes de llamar a su método que usa la carpeta
fuente
Si recibe este error al cargar archivos en Subdominio y funciona correctamente en su
localhost
, siga los pasos a continuación:Solución:
Panel Plesk
CPanel
Para más detalles consulte aquí
Motivo del error:
FileUpload.SaveAs(Server.MapPath("~/uploads/" + *YOUR_FILENAME*))
que será su código para mover sus archivos a la ruta de carga.Server.MapPath
le dará la ruta física (Real Path) del directorio. Pero su Subdominio puede no tener permiso para acceder a la ruta física.Por lo tanto, si otorga permiso para que el subdominio acceda a permisos de escritura / modificación, se resolverá el problema.
fuente
Puede intentar verificar si sus propiedades web para el proyecto no cambiaron a IIS Express y volver a cambiarlo a IIS Local
fuente
Asegúrese de que su objetivo en
System.IO.Delete(string file)
es un archivo que existe. Tal vez hay un error en su código; al igual que no pasa el nombre de archivo correcto al método, o su destino es una carpeta. En estos casos verá: "error de acceso a la ruta denegado".fuente
Creé un directorio virtual con permiso completo y agregué la fuente ffmpeg y los archivos de video allí, por lo que finalmente tuvo sentido, ya que cualquiera puede acceder a él.
fuente