exécutable .NET ne se charge pas des ensembles référencées lors du démarrage à partir de \\ localhost \ xyz

StackOverflow https://stackoverflow.com/questions/2160317

Question

Mes références de abc.exe exécutables .NET plusieurs ensembles. L'un d'eux est appelé xyz.core.exe. J'ai du mal à le faire fonctionner quand il est en cours de démarrage à partir d'un emplacement réseau spécifié par un nom de partage avec un chemin tel que \\localhost\xyz\abc.exe. Cela fonctionne bien si je monte une lettre de lecteur réseau nommé Z: sur \\localhost\xyz et si je lance Z:\abc.exe.

.NET semble se confondre en essayant de charger l'ensemble de xyz.core.exe de la part. Il jette une exception System.IO.FileNotFoundException avec les informations du journal de fusion suivant:

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.

En regardant cela par un autre angle avec Process Monitor, je vois quelques tentatives d'accès sur mon disque local avec les chemins suivants:

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

comme si le chargeur mal compris l'intention du chargement d'un partage réseau et abandonné le \\localhost à utiliser C: à la place. Le problème ne semble pas être lié aux paramètres de sécurité (je ne l'ai jamais sali avec CASPOL sur ma machine) et j'utilise .NET 3.5 SP1 qui permet executables à lancer à partir d'une action.

Et le fait que le démarrage du programme à travers les œuvres de lettre de lecteur réseau mappés équivalent doit confirmer que ce n'est pas un problème de sécurité.

Le problème est pas lié au fait que la référence est à un ensemble EXE soit, car elle produit le même genre d'erreurs de charge avec des références à des ensembles de DLL simples.

Toutes les idées de ce qui pourrait être la cause de ce problème de chargement? Quelqu'un at-il d'autre dans l'exécution d'une telle situation?

Était-ce utile?

La solution

Je ne peux pas expliquer le « C: \ xyz \ xyz.core.dll » (sauf une curiosité), mais le reste est exactement ce que j'attendais

.

Cela semble tout lié à la sécurité du code d'accès. Jusqu'à une date récente, vous devez utiliser « caspol » pour configurer CAS pour vous permettre de execute l'exe de tout type de partage réseau. faire obtenir l'autorisation d'exécution, mais les partages UNC ne proposent pas: ce que les cartographiés actions (etc "f") a été modifié (soit .NET 3.5 ou .NET 3.5 SP1).

peut utiliser "caspol" d'accorder l'accès à l'UNC (

Autres conseils

Je suis confus - si vous utilisez localhost il est censé aller à la harddrive locale.

Vous essayez de redéfinir le localhost pour pointer ailleurs? Si tel est le cas, cela peut être ce qui cause des problèmes - essayez d'utiliser un autre nom

scroll top