Ich habe einen von IIS gehosteten WCF-Dienst, und ich versuche, Directory.Exists()
method zu verwenden. Wenn ein nicht vorhandener Netzwerkspeicherort übergeben wird, hängt diese Methode. Ich habe dafür gegoogelt und festgestellt, dass es "irgendwie ok" wegen Directory.Exists()
innerer Implementierung ist. Aber ich habe eine einfache Konsolenanwendung geschrieben, die dasselbe tut und Directory.Exists()
niemals hängt, gibt immer ' false
' zurück. Ich führe die Anwendung unter meinem (Admin) Konto und IIS-Pool läuft unter "Netzwerk-Service".
Hast du irgendwelche Ideen warum? Was ist der Unterschied zwischen der Ausführung in einem Service oder einer Konsolenanwendung?
Der Schlüssel hier ist wirklich über Netzwerkdienst gegenüber dem Administrator-Konto ausgeführt.
Sie wissen, dass der Netzwerkstandort später aktiviert werden kann, aber Sie sind sich nicht sicher, ob das früher möglich ist.
Hier ist ein Beispiel für einen Fall, in dem Sie erwarten könnten, dass es Zugriff gibt, aber es funktioniert nicht wirklich: Ссылка
Die Tatsache, dass sich der Computer mit dem freigegebenen Laufwerk nicht in einer Domäne befindet, ist Ihr Hauptproblem
Dies kann durch Benutzerautorisierungssteuerung verursacht werden, die in Windows vorhanden ist (erinnern Sie sich, wenn Sie versuchen, auf einen Ordner zuzugreifen, auf den Sie in Windows keinen Zugriff haben? Es wartet eine lange Zeit auf "Sie können nicht zugreifen , ... "oder so ähnlich."
Welcher Benutzer führt die Anwendung aus? Ihre Benutzer-ID (gemäß Ihren Angaben können Sie auf den Ordner zugreifen, in dem die Konsolenanwendung ausgeführt wird) kann diesen Ordner sehen.
Versuchen Sie also, die Anwendung als Ihre eigene Benutzer-ID auszuführen.
Außerdem, überprüfen Sie diesen Link: Ссылка
Sind Sie sicher, dass die Anwendung als Netzwerkdienst ausgeführt wird? Ein lokales Netzwerkdienstkonto hat keinen Zugriff auf das Netzwerk.
Verwenden Sie den UNC-Pfad anstelle eines zugeordneten Netzlaufwerks, da das zugeordnete Laufwerk für Ihr Benutzerkonto spezifisch ist. Stellen Sie außerdem sicher, dass die Identität des Anwendungspools Zugriff auf das UNC-Pfadziel hat.
besuchen Sie bitte diesen Link:
Ссылка Wie bekomme ich den Arbeitspfad einer Anwendung?
danke.