.NET ausführbare Datei lädt nicht Baugruppen referenziert beim Start von \\ localhost \ xyz
-
23-09-2019 - |
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?
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.
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,