[c#] Se niega el acceso a la ruta


Answers

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.

Question

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




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




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.




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.




Lo resolví con esta configuración:

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




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 />




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.




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




Related