Domanda

I miei NET eseguibili riferimenti abc.exe diversi assembly. Uno di loro si chiama xyz.core.exe. Ho difficoltà a farla funzionare quando viene avviato da un percorso di rete specificato attraverso un nome di condivisione con un percorso, come \\localhost\xyz\abc.exe. Questo funziona bene se monto una lettera di unità di rete di nome Z: su \\localhost\xyz e se mi lancio Z:\abc.exe.

.NET sembra confondersi durante il tentativo di caricare l'assembly xyz.core.exe dalla condivisione. Si genera un'eccezione System.IO.FileNotFoundException con le seguenti informazioni di log di fusione:

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.

Guardando a questo attraverso un altro angolo Process Monitor, vedo un paio di tentativi di accesso sul mio disco locale con i seguenti percorsi:

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

come se il caricatore mis-capito l'intento di caricamento da una condivisione di rete e lasciò cadere la \\localhost di utilizzare C: invece. Il problema non sembra essere correlato alle impostazioni di protezione (non ho mai pasticciato con caspol sulla mia macchina) e sto usando .NET 3.5 SP1 che permette eseguibili da avviare da una condivisione.

E il fatto che l'avvio del programma attraverso le equivalenti mappata di rete di lettera di unità opere dovrebbe confermare che questo non è un problema di sicurezza.

Il problema non è correlato al fatto che il riferimento è a un assembly EXE sia, in quanto produce lo stesso tipo di errori di caricamento con riferimenti ad assembly DLL strisciamento.

Tutte le idee su quello che potrebbe essere la causa di questo problema di caricamento? Ha chiunque altro run in una situazione del genere?

È stato utile?

Soluzione

Non riesco a spiegare il "C: \ xyz \ xyz.core.dll" (se non come una curiosità), ma il resto è esattamente quello che mi sarei aspettato

.

Questo sembra tutto legato in sicurezza codice di accesso. Fino a poco tempo, si avrebbe bisogno di usare "caspol" per configurare CAS per consentire di eseguire l'exe da qualsiasi tipo di condivisione di rete. Questo è stato cambiato (sia .NET 3.5 o .NET 3.5 SP1) tali che mappati azioni ( "F:" etc) do get permesso di esecuzione, ma condivisioni UNC non.

possono usare "caspol" per concedere l'accesso al UNC ( come questo ), ma IMO è una scelta di gran lunga migliore per passare alla distribuzione ClickOnce. Questo può ancora essere tramite una condivisione di rete, ma include informazioni aggiuntivo di pubblicazione che consente il runtime montarlo. I credono Può anche essere utilizzato per distribuire in modo tale che funziona offline (quando la rete non è disponibile), ma aggiornare automaticamente dalla condivisione quando possibile So che questo funziona per la distribuzione http - I credono funziona per la rete). L'IDE presenta questo con il pretesto di "pubblicare", ed è circa 5 scatti tutto fatto.

Altri suggerimenti

Sono confuso - se si utilizza localhost si suppone di andare al hard disk locale.

Stai cercando di rimappare il localhost per puntare altrove? Se questo è il caso questo può essere ciò che provoca problemi - provare a utilizzare un nome diverso

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top