Frage

Ich habe einen Windows-Dienst eingestellt Dateien von einem lokalen Verzeichnis auf eine Samba-Freigabe kopieren.

Der Dienst ist über einen UNC-Pfad zu dem Server (d \ Remote \ SharedDir).

Ich habe als der Benutzer, unter dem eingeloggte der Dienst ausgeführt wird, und konnte beide Kopieren von Dateien und erstellen Sie Dateien auf dem Samba-Freigabe, den UNC-Pfad verwendet wird.

Wenn jedoch der Dienst läuft Ich erhalte io Ausnahmen, die einen Login-Fehler vor. Ich habe auf diesem Feld Prozessmonitor laufen, den Dienst zu beobachten, und ich kann sehen, daß es den UNC-Pfad zu finden, aber ein Login-Fehler, wenn ich versuche auf die Freigabe zu schreiben.

Dies ist plain vanilla .net System.IO.File.Copy Anruf mit.

Ich verstehe nicht, die Fehler, wie wenn sie unter demselben Benutzer angemeldet ich in der Lage bin zu kopieren und erstellen Sie Dateien auf der Freigabe.

Irgendwelche Ideen?

Edit: Exception Text

  

Fehler in Hauptverarbeitungsschleife   (DoWork ()): Anmeldung fehlgeschlagen: unbekannt   Benutzername oder falsches Passwort.

     

System.Exception: Fehler auf   MyService.ProcessExportTransferfileDirectories   und Werte: D: \ Export,   \ Remote \ Einschub,   D: \ Export \ Archiv --->   System.IO.IOException: Anmeldung fehlgeschlagen:   unbekannter Benutzername oder falsches Kennwort.

     

an   System.IO .__ Error.WinIOError (Int32   errorcode, String maybeFullPath) an   System.IO .__ Error.WinIOError () bei   System.IO.File.Move (String   source, String Destfilename)
  beim   MyService.Consumer.BusinessLogic.WmsFacade.MoveAndArchiveFile (String   source, String target,   String Archivordner, String   rootFolder, LogCategory logCategory,   LogCounter logCounter) --- Ende der   Ausnahmestapelüberwachung --- at   MyService.Consumer.BusinessLogic.WmsFacade.MoveAndArchiveFile (String   source, String target,   String Archivordner, String   rootFolder, LogCategory logCategory,   LogCounter logCounter) bei   MyService.Consumer.BusinessLogic.WmsFacade.ProcessExportTransfer (IDictionary`2   fileDirectories) bei   MyService.Core.TimedWorkerProvider.DoWork ()

War es hilfreich?

Lösung

Es endete ein Berechtigungsproblem zu sein. - Nach dem Dienst als einen anderen Benutzer ausgeführt wird, dass das Setup auf der Samba-Freigabe war es ohne Probleme lief, das Kopieren von Dateien über

Immer noch nicht verstehen, warum, wenn ein anderes Konto verwenden könnte ich kopieren / erstellen Dateien auf der Freigabe mit dem Windows Explorer, aber wenn der Dienst unter demselben Konto ausgeführt konnte es nicht, den Anteil an alle Zugang: (

Andere Tipps

würde ich empfehlen, zunächst eine Laufwerkszuordnung und dann tun Sie die Datei kopieren auf dem zugeordneten Laufwerk anstelle der Aktie.

Sie können ein Laufwerk des DOS-Befehl net use verwenden. Zum Beispiel:

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

Dies sollte die Anmeldung Probleme lösen.

Ein sehr hilfreiches Werkzeug in Ihrer Situation ist Prozessmonitor . führen Sie es einfach als Administrator an und fügen Sie die folgenden Filter:

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

In Kürze erhalten Sie detaillierte Informationen zu den Dateien finden Sie in Prozess zu verwenden versucht.

  

Wie bereits erwähnt, wenn ich mit der Login möglich   gleiches Konto, dass der Service ist   läuft wie, ich habe keine Probleme beim Kopieren   zu und Dateien auf der Freigabe zu schaffen. -   Oded vor 1 Min

Haben gewähren Sie das Benutzerkonto der Dienste laufen „Als Dienst anmelden“ Berechtigungen in der lokalen Sicherheitsrichtlinie ??

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top