2009-10-23 33 views
5

Tengo un sitio web .net que reside en un servidor web que ejecuta IIS 6.0 en el servidor win2k3. Esto incluye un directorio virtual que apunta a través de un nombre UNC a un servidor de archivos. El "conectar como" está configurado para usar una cuenta de servicio en nuestro dominio AD que tiene acceso a la aplicación web, así como para escribir y modificar en la carpeta del servidor de archivos. Actualmente estoy usando aliasing con la cuenta de servicio y he establecido los permisos apropiados en la carpeta de archivos temporales Miscrosoft.net en el servidor web. No puedo crear un directorio de escritura o guardar un archivo. Cualquier información será apreciada.FileUpload .net controla y guarda archivos en la carpeta virtual en el servidor de archivos remoto

Respuesta

2

En primer lugar, las contraseñas de "Conectar como" no se almacenarán en caché para siempre en la memoria (reinicio) y es posible que tenga que buscar una alternativa a este método de conectividad por esa razón, lamentablemente.

En segundo lugar, ¿la cuenta de trabajador de ASP.NET "IUSR_IIS Nombre del equipo" tiene acceso al directorio de destino en el que está escribiendo? Estoy asumiendo que no, porque no será un usuario conocido en el servidor remoto. Esto significa que el usuario/objeto especial "Todos" tendrá que tener acceso (en su escenario particular).

Una alternativa sería conectarse utilizando un usuario conocido para ambos hosts.

+0

tengo un servicio de configuración de la cuenta que está en nuestro dominio de AD. He configurado esa cuenta de servicio en web.config con una entrada de identidad, así como una conexión como (que funciona para ver archivos en la carpeta virtual) pero no ayuda con la escritura. De algunos artículos que encontré en el .net, agregué un cambio adicional a la carpeta .file tempfile en el servidor web que se requiere para que esos archivos se guarden en caché. Creo que parte del problema es el nombre de UNC y cómo se transmite la identidad. Adjuntaré el fragmento de código en un comentario separado. –

+0

Adjunto un fragmento de código: de la cadena default.aspx: SaveLocation = Server.MapPath ("/") + "ServerInspectionFilePath" + "\\" + ClientFileName; de web.config: Creo que la sintaxis/formato para la ruta está apagado. Puede que me obliguen a depurar remotamente en el servidor web. –

0

Tengo esto funcionando ahora. Para que esto funcione correctamente, necesita: 1. Una cuenta de servicio con una contraseña que no caduque en su dominio que sea accesible para el servidor web y el servidor de archivos 2. Crea la carpeta virtual apropiada con la "conexión como" establecer en la cuenta de servicio con la contraseña correspondiente 3. Debe otorgar permisos de escritura a la cuenta de servicio en el directorio .net Microsoft.NET \ Framework \ v2.0.50727 \ Temporal ASP.NET Files en el servidor 4. El servicio la cuenta tiene que tener acceso de lectura/escritura/modificación a la carpeta de archivos 5. El "guardar como" debe ser el nombre completo de UNC para el servidor de archivos. No use la ruta de acceso de server.map, pero el nombre completo de la carpeta como: \ myserver \ sharename \ directory \ + filename. Estoy almacenando el mío en web.config como un par clave/valor.

Eso lo resume.

Fragmento de código:

tratar { si (uploadDoc.FileName = ""!) {

   if (!Directory.Exists(MyFilePath)) 
        Directory.CreateDirectory(ServerFilePath); 


       if (!File.Exists(Server.MapPath(ServerFileName))) 
       { 
        uploadDoc.PostedFile.SaveAs(SaveLocation); 
       } 
Cuestiones relacionadas