servicio de Windows no puede copiar al recurso compartido de archivos
-
21-08-2019 - |
Pregunta
Tengo un servicio de Windows configurado para copiar archivos desde un directorio local a una parte de la samba.
El servicio se conecta a través de una ruta UNC para el servidor (es decir, \ remoteserver \ SharedDir).
He iniciado la sesión como usuario con la que se ejecuta el servicio, y fue capaz de tanto copiar archivos y crear archivos en la parte de la samba, usando la ruta UNC.
Sin embargo, cuando se ejecuta el servicio que estoy recibiendo excepciones io que sugieren un error de inicio de sesión. He corrido monitor de proceso en ese cuadro, observando el servicio y puedo ver que la búsqueda de la ruta UNC pero conseguir un error de inicio de sesión al intentar escribir en el recurso compartido.
Este es el uso normal de vainilla llamada .net System.IO.File.Copy.
No entiendo los errores, como cuando se haya identificado bajo el mismo usuario que soy capaz de copiar y crear archivos en el recurso compartido.
¿Alguna idea?
Editar: Texto de la excepción
Error en el bucle de procesamiento principal (DoWork ()): Error de inicio: desconocido nombre de usuario o contraseña incorrecta.
System.Exception: Error en MyService.ProcessExportTransferfileDirectories y los valores: D: \ Export, \ ServidorRemoto \ Intray, D: \ Export \ Archivo ---> System.IO.IOException: Error de inicio: nombre de usuario desconocido o contraseña incorrecta.
AT System.IO .__ Error.WinIOError (Int32 errorCode, Cadena maybeFullPath) a System.IO .__ Error.WinIOError () a System.IO.File.Move (String SourceFileName, Cadena destFileName)
a MyService.Consumer.BusinessLogic.WmsFacade.MoveAndArchiveFile (String sourceFolder, Cadena targetFolder, CarpetaArchivo cadena, cuerda RootFolder, LogCategory logCategory, LogCounter logCounter) --- Fin de la seguimiento de pila de excepción interna --- en MyService.Consumer.BusinessLogic.WmsFacade.MoveAndArchiveFile (String sourceFolder, Cadena targetFolder, CarpetaArchivo cadena, cuerda RootFolder, LogCategory logCategory, LogCounter logCounter) a MyService.Consumer.BusinessLogic.WmsFacade.ProcessExportTransfer (IDictionary`2 fileDirectories) a MyService.Core.TimedWorkerProvider.DoWork ()
Solución
Se terminó siendo un problema de permisos -. Después de ejecutar el servicio como un usuario diferente que fue instalado en la parte de la samba que corrió sin ningún problema, la copia de archivos a través de
Todavía no entiendo por qué cuando se utiliza una cuenta diferente que pudiera copiar / crear archivos en el recurso compartido utilizando el Explorador de Windows, pero cuando el servicio se ejecuta bajo la misma cuenta que no podía acceder al recurso compartido en absoluto: (
Otros consejos
Yo recomendaría asignar una unidad primero y luego hacer la copia de archivos a la unidad asignada en lugar de la acción.
Puede asignar una unidad mediante el comando net use dos. Por ejemplo:
System.Diagnostics.Process.Start("net", "use h: \remoteserver\shareddir /User:domian\me password")
Esto debería resolver cualquier problema de inicio de sesión.
Una herramienta muy útil en su situación es monitor de proceso . Sólo tienes que ejecutar como administrador y añadir el siguiente filtro:
Process Name is "your_process.exe" AND Operation is "CreateFile"
Podrá ver la información detallada acerca de los archivos de su proceso está intentando utilizar.
Como se mencionó, al iniciar sesión con el misma cuenta que el servicio es corriendo como, no tengo problemas copiando a y la creación de archivos del recurso compartido. - Hace ODED 1 min
¿Se concede a la cuenta de usuario del servicio se está ejecutando como "Iniciar sesión como servicio" permisos en la política de seguridad local ??