Question

J'ai un service Windows mis à copier des fichiers à partir d'un répertoire local à un partage Samba.

Le service se connecte via un chemin UNC vers le serveur (par exemple \ remoteserver \ SharedDir).

Je suis connecté en tant que l'utilisateur sous lequel le service est en cours d'exécution, et a pu les copier des fichiers et créer des fichiers sur le partage de la samba, en utilisant le chemin UNC.

Cependant, lors de l'exécution du service que je reçois des exceptions io qui suggèrent une erreur de connexion. J'ai couru moniteur de processus sur cette boîte, en regardant le service et je peux le voir trouver le chemin UNC mais obtenir une erreur de connexion lorsque vous essayez d'écrire sur le partage.

est d'utiliser l'appel de vanille .net System.IO.File.Copy plaine.

Je ne comprends pas les erreurs, comme lorsque vous êtes connecté sous le même utilisateur que je suis en mesure de copier et créer des fichiers sur le partage.

Toutes les idées?

Modifier: texte d'exception

  

Erreur dans la boucle principale de traitement   (DoWork ()): Échec de la connexion: inconnue   nom d'utilisateur ou mot de passe incorrect.

     

System.Exception: Erreur sur   MyService.ProcessExportTransferfileDirectories   et les valeurs: D: \ Export,   \ RemoteServer \ intray,   D: \ Export \ Archive --->   System.IO.IOException: Échec de la connexion:   nom d'utilisateur inconnu ou mot de passe incorrect.

     

  System.IO .__ Error.WinIOError (Int32   errorCode, String maybeFullPath) à   System.IO .__ Error.WinIOError () à   System.IO.File.Move (String   sourceFileName, String destFileName)
  à   MyService.Consumer.BusinessLogic.WmsFacade.MoveAndArchiveFile (String   sourcefolder, String TargetFolder,   Chaîne dossierArchive, String   rootFolder, LogCategory logCategory,   LogCounter logCounter) --- Fin de la   trace de pile d'exception interne --- à   MyService.Consumer.BusinessLogic.WmsFacade.MoveAndArchiveFile (String   sourcefolder, String TargetFolder,   Chaîne dossierArchive, String   rootFolder, LogCategory logCategory,   LogCounter logCounter) à   MyService.Consumer.BusinessLogic.WmsFacade.ProcessExportTransfer (IDictionary`2   fileDirectories) à   MyService.Core.TimedWorkerProvider.DoWork ()

Était-ce utile?

La solution

Il a fini par être un problème d'autorisations -. Après l'exécution du service en tant qu'utilisateur différent qui a été installé sur la part de la samba, il a couru sans problème, la copie des fichiers sur

ne comprends toujours pas pourquoi lorsque vous utilisez un autre compte que je pouvais copier / créer des fichiers sur le partage à l'aide de l'explorateur Windows, mais lorsque le service était en cours d'exécution sous le même compte qu'il ne pouvait pas accéder à la part du tout: (

Autres conseils

Je recommande mapper un lecteur d'abord et ensuite faire la copie de fichier sur le lecteur mappé au lieu du partage.

Vous pouvez mapper un lecteur en utilisant la commande net use dos. Par exemple:

System.Diagnostics.Process.Start("net", "use h: \remoteserver\shareddir /User:domian\me password")

Cela devrait résoudre les problèmes de connexion.

Un outil très utile dans votre situation est moniteur . Il suffit de l'exécuter en tant qu'administrateur et ajoutez le filtre suivant:

Process Name is "your_process.exe" AND Operation is "CreateFile"

Vous verrez des informations détaillées sur les fichiers de votre processus tente d'utiliser.

  

Comme mentionné précédemment, lorsque je me connecte avec le   même compte que le service est   en cours d'exécution comme, je n'ai aucun problème de la copie   à la création de fichiers et sur la part. -   Il y a Oded 1 min

Avez-vous octroyez le compte utilisateur du service est en cours d'exécution que les autorisations « d'ouverture de session en tant que service » dans la politique de sécurité locale ??

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top