Frage

Meine .NET ausführbare abc.exe Referenzen mehrere Baugruppen. Einer von ihnen ist xyz.core.exe genannt. Ich habe Mühe, es an der Arbeit, wenn es von einem Netzwerk über einen Freigabenamen mit einem Pfad wie \\localhost\xyz\abc.exe angegeben gestartet wird. Dies funktioniert gut, wenn ich einen Laufwerksbuchstaben benannt Z: auf \\localhost\xyz und wenn ich Einführung Z:\abc.exe montieren.

scheint .NET verwirrt werden beim Versuch, die xyz.core.exe Baugruppe von der Aktie zu laden. Es wirft ein System.IO.FileNotFoundException Ausnahme mit der folgenden Fusion Log-Informationen:

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Running under executable  \\localhost\xyz\abc.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = Workstation\arnaud
LOG: DisplayName = xyz.core, Version=2.5.2.1001, Culture=neutral, PublicKeyToken=...
(Fully-specified)
LOG: Appbase = file://localhost/xyz/
LOG: Initial PrivatePath = NULL
Calling assembly : abc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=...
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using machine configuration file from     C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Post-policy reference: xyz.core, Version=2.5.2.1001, Culture=neutral, PublicKeyToken=...
LOG: Attempting download of new URL file://localhost/xyz/xyz.core.DLL.
LOG: Attempting download of new URL file://localhost/xyz/xyz.core/xyz.core.DLL.
LOG: Attempting download of new URL file://localhost/xyz/xyz.core.EXE.
LOG: Attempting download of new URL file://localhost/xyz/xyz.core/xyz.core.EXE.

Blick auf diese durch einen anderen Winkel mit Process Monitor, sehe ich ein paar Versuche, den Zugang auf meinem lokalen Laufwerk mit den folgenden Pfaden:

C:\xyz\xyz.core.dll
C:\xyz\xyz.core\xyz.core.dll
C:\xyz\xyz.core.exe
C:\xyz\xyz.core\xyz.core.exe

als ob die Lader falsch verstanden die Absicht des Ladens von einer Netzwerkfreigabe und legte mit der \\localhost Gebrauch C: statt. Das Problem scheint nicht zu Sicherheitseinstellungen verwendet zu sein (ich habe noch nie mit CASPOL auf meinem Rechner messed) und ich bin mit .NET 3.5 SP1, der ausführbaren Dateien kann von einer Freigabe gestartet werden.

Und die Tatsache, dass das Programm durch den entsprechenden Laufwerksbuchstaben Werke abgebildet Start bestätigen sollte, dass dies kein Sicherheitsproblem dar.

Das Problem ist nicht auf die Tatsache, dass die Bezugnahme auf eine EXE-Baugruppe entweder ist, da es die gleiche Art von Lastfehler mit Bezug auf Klar DLL Baugruppen produziert.

Irgendwelche Ideen von dem, was die Ursache für diesen Laden Problem sein könnte? Hat jemand anderes in einer solchen Situation führen?

War es hilfreich?

Lösung

Ich kann das "C: \ xyz \ xyz.core.dll" nicht erklären. (Außer als Kuriosität), aber der Rest ist genau das, was ich erwarten würde

Dies scheint alle gebunden in Code-Zugriffssicherheit. Bis vor kurzem, müßten Sie „caspol“ zu konfigurieren CAS verwenden, damit Sie auf Ausführen die exe aus jeder Art von Netzwerkfreigabe. Dies wurde geändert (entweder .NET 3.5 oder .NET 3.5 SP1), so dass abgebildet Aktien ( "f" usw.) tun Erlaubnis ausführen, aber UNC-Freigaben nicht.

Sie können use "caspol" Zugriff auf die UNC zu gewähren (

Andere Tipps

Ich bin verwirrt - wenn Sie localhost verwenden, es soll auf die lokale Festplatte gehen.

Sind Sie versuchen, den lokalen Host neu zuordnen an anderer Stelle zu zeigen? Wenn dies der Fall ist, kann das sein, was Probleme verursacht - versuchen, einen anderen Namen zu verwenden,

scroll top