2017-05-15 4 views
0

Verwenden Sie das FileSystemWatcher-Objekt, um Dateien aus einem Ordner abzurufen.FileSystemWatcher.Path Ausnahme für freigegebenes Netzwerklaufwerk

Der Code funktioniert gut für lokale Maschinen Laufwerke/Ordner aber löst Ausnahme aus, wenn ich einen Netzwerkpfad verwenden.

Aus irgendeinem Grund löst der Code keine Ausnahme aus, wenn ich den Dienst im Debug-Modus starte. Wenn ich es über installutil installiere, wird diese Ausnahme erneut ausgelöst. gibt es einige Berechtigungsprobleme Vielleicht, aber ich weiß nicht, was ...

public LevelOneValidatedWatcher(string strLevelOneFolder) 
{ 
    FileSystemWatcher objFSW = new FileSystemWatcher(); 
    objFSW.Path = strLevelOneFolder; /// <<<<<<<<<<<< EXCEPTION THROWN HERE 
    objFSW.Filter = "*.zip"; 
    objFSW.Created += new FileSystemEventHandler(myWatcher_Created); 
    objFSW.Renamed += new RenamedEventHandler(mydWatcher_Renamed); 
    objFSW.EnableRaisingEvents = true; 
} 

System.ArgumentException was unhandled 
Message=The directory name T:\INFORMATION TECHNOLOGY\bu is invalid. 
Source=System 
StackTrace: 
at System.IO.FileSystemWatcher.set_Path(String value) 
at MA.BatchTool.ServerLibrary.LevelOneValidatedWatcher..ctor(String strLevelOneFolder) in D:\Dev\Projects\MailAssurety1.1\Development\SourceCode\MA_1.1\WebServerSide\WebServerLibraries\LevelOneValidatedWatacher.cs:line 23 
at MA.BatchTool.ServerLibrary.ServerJobProcessor.StartFileWatcher(Object strPath) in D:\Dev\Projects\MailAssurety1.1\Development\SourceCode\MA_1.1\WebServerSide\WebServerLibraries\ServerJobProcessor.cs:line 32 
at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) 
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
at System.Threading.ThreadHelper.ThreadStart(Object obj) 
+0

nach der Ausnahmemeldung, wird der Pfad nicht existiert .. Stellen Sie sicher, den richtigen Pfad verwenden. –

+0

Hallo, der Pfad existiert. Es ist eine gemeinsame Festplatte. Das Programm kann auf den Pfad zugreifen, wenn ich mein Visual Studio im Debug-Modus starte. Nach der Installation des Dienstes als Windows-Dienst trat die Ausnahme auf. –

+1

Überprüfen Sie [hier] (http:// Stackoverflow.com/questions/3622089/windows-service-cant-access-network-share) und [hier] (http://stackoverflow.com/questions/16946312/how-come -my-windows-service-can not-Zugriff-a-Ordner-mit-Dateien-in-ihnen) diese wird Ihnen wahrscheinlich helfen. –

Antwort

1

Laufwerksbuchstaben Zuordnungen sind eine pro-interaktive Login-Einstellung. Die Ausnahme gibt Ihnen die Wahrheit, T:\INFORMATION TECHNOLOGY\bu tatsächlich nicht vorhanden, da für andere Sitzungen als Ihre eigene Sitzung (z. B. die Sitzung 0, unter dem der Dienst ausgeführt wird) das Laufwerk T:\ nicht überall zugeordnet wird. Der Grund, warum es beim Debuggen funktioniert, ist, dass Sie den Dienst wahrscheinlich in Ihrer eigenen Sitzung statt in der Sitzung 0 ausführen.

Ein ähnliches Problem tritt auf, wenn Sie versuchen, auf ein zugeordnetes Laufwerk von einem Programm zuzugreifen, das von a gestartet wird UAC-Eingabeaufforderung, da der UAC-Benutzer als "anderer Benutzer" betrachtet wird.

Mögliche weitere Lektüre für mögliche Abhilfen „Map a network drive to be used by a service

+0

zu verwenden, macht dies Sinn für mich. –

0

Ich denke, die gemeinsame Fahrt zum Local System Account nicht zugänglich ist, und Sie werden den Windows-Dienst so konfigurieren, müssen als spezifisches laufen

Benutzer

picture

+0

Ja, das habe ich gemacht Um UNC –

Verwandte Themen