Können Sie erklären, warum DirectoryInfo.GetFiles diese IOException erzeugt?

8

Ich habe eine WinForms-Client-Server-App, die in einem Novell-Netzwerk ausgeführt wird, das den folgenden Fehler beim Verbinden mit dem alleinigen Windows 2003-Server im Netzwerk verursacht:

%Vor%

Der Netzwerkadministrator des Kunden verwaltet die Windows Server-Verbindung, indem er den Benutzernamen und das Kennwort der Arbeitsstation manuell mit einem lokalen Benutzer auf dem Server synchronisiert. Das Seltsame an dem Fehler ist, dass der Benutzer vor und nach dem Fehler auf den Server schreiben kann, ohne sich explizit anzumelden.

Können Sie erklären, warum der Fehler auftritt und eine Lösung anbieten?

    
flipdoubt 24.02.2009, 18:35
quelle

5 Antworten

38

Ich habe das gleiche Problem, wenn ich versuche, auf das Dateisystem eines Windows-Servers in einer anderen Domäne zuzugreifen. Das Problem besteht darin, dass das Benutzerkonto, unter dem das Programm ausgeführt wird, keinen Zugriff auf den Remote-Server hat. Windows arbeitet im Hintergrund, damit es bei der Verwendung von Windows Explorer nahtlos aussieht, da es davon ausgeht, dass Ihre Remote-Anmeldeinformationen mit Ihren lokalen Anmeldeinformationen übereinstimmen.

Wenn Sie ein Laufwerk lokal dem Remote-Server zuordnen und dann das lokal zugeordnete Laufwerk in Ihrem Code verwenden, sollte das Problem nicht auftreten. Wenn Sie ein Laufwerk nicht zuordnen können, aber die Anmeldeinformationen für den Remote-Server fest codieren können, können Sie diesen Code verwenden:

%Vor%

Dann können Sie auf den Remote-Server zugreifen, indem Sie Folgendes tun:

%Vor%     
David 26.02.2009, 21:00
quelle
2

Für die VB.Net-Entwickler (wie mich) ist hier die VB.Net-Version:

%Vor%

Und benutze es wie:

%Vor%     
Dennis Oosterkamp 06.04.2011 07:49
quelle
1

Ich denke, Sie sollten versuchen, das Problem zu reproduzieren, und dann einen Paketmonitor verwenden, um den Netzwerkverkehr zu sehen und den Unterschied zwischen der Fehlersituation und der Erfolgssituation zu betrachten.

Schreiben Sie dann eine Anwendung, die die rohen APIs aus Windows (P / Invokes) verwendet, um Ihre Fehlersituation zu reproduzieren und herauszufinden, welche Parameter den Fehler verursachen. Wenn Sie in der Lage sind, das Problem zu lösen, dann ist es nur die Frage, wie Sie die Komponenten dazu bringen, das zu tun, was Sie wollen.

Andere Richtungen, die Sie betrachten könnten (nachdem Sie das Problem stabil reproduzieren können):

  • Verwenden Sie Process Monitor , um alle API-Aufrufe zu protokollieren und festzustellen, woher der Fehler kommt.
  • Versuchen Sie es auf einer sauberen VM / Maschine und versuchen Sie es dort zu reproduzieren
  • Deaktivieren Sie den Virenscanner
  • Aktualisieren Sie den Novell-Client
Davy Landman 05.03.2009 08:58
quelle
1

IMHO scheint es eine Art Nebeneffekt zu sein, ein abgelaufenes Authentifizierungs-Token (oder etwas ähnliches) zu aktualisieren.

Mein Fall, als Active Directory-Benutzer mit Internetzugang über einen Proxy (Squid), stöbere ich ohne Probleme, bis ich (in zufälligen Abständen) einen Fehler über fehlende Anmeldeinformationen bekomme, der durch eine Seitenaktualisierung in behoben wird der Browser, dann funktioniert alles bis zum nächsten Fehler.

    
alexandrul 05.03.2009 09:19
quelle
0

An dieser Adresse ist ein Microsoft-Beispiel verfügbar: Ссылка

Aber es heißt in ihrem Beispiel: "Unter Windows Vista und höher muss dieses Beispiel als Administrator ausgeführt werden."

Diese Lösung ist also nur gut, wenn der Benutzer, der den Code ausführt, auf den meisten Plattformen admin ist.

    
user2907498 27.02.2018 14:58
quelle