Esecuzione di assembly .NET "parzialmente attendibili" da una condivisione di rete

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

  •  09-06-2019
  •  | 
  •  

Domanda

Quando provo a eseguire un assembly .NET (boo.exe) da una condivisione di rete (mappata su un'unità), fallisce poiché è solo parzialmente attendibile:

Unhandled Exception: System.Security.SecurityException: That assembly does not allow partially trusted callers.
   at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Assembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed)
   at BooCommandLine..ctor()
   at Program..ctor()
   at ProgramModule.Main(String[] argv)
The action that failed was:
LinkDemand
The assembly or AppDomain that failed was:
boo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=32c39770e9a21a67
The Zone of the assembly that failed was:
Intranet
The Url of the assembly that failed was:
file:///H:/boo-svn/bin/boo.exe

Con istruzioni da un post sul blog, ho aggiunto una policy alla configurazione .NET fidandosi completamente di tutti gli assembly file:///H:/* come URL.L'ho verificato inserendo l'URL file:///H:/boo-svn/bin/boo.exe dentro Valutare l'Assemblea strumento nella configurazione .NET e notando che boo.exe aveva il file Senza restrizioni permesso (che non aveva prima della policy).

Anche con il permesso, boo.exe non funziona.Ricevo ancora lo stesso messaggio di errore.

Cosa posso fare per eseguire il debug di questo problema?Esiste un altro modo per eseguire assembly "parzialmente attendibili" da condivisioni di rete senza dover modificare qualcosa per ogni assembly che desidero eseguire?

È stato utile?

Soluzione

Con .NET 3.5 SP1, gli assembly .NET eseguiti da condivisioni UNC dispongono di autorizzazioni complete.

Vedi Brad Abrams Consenti l'esecuzione dei file .exe da una condivisione di rete per soluzioni alternative e discussioni, e infine il follow-up .NET 3.5 SP1 consente l'avvio del codice gestito da una condivisione di rete.

Altri suggerimenti

Ho risolto il problema utilizzando caspol come indicato nel post sul blog di Johnny Hughes Esecuzione di un'applicazione .Net da una condivisione di rete:

caspol -addgroup 1.2 -url file:///H:/* FullTrust

Sembra che la GUI di configurazione .NET per la gestione dei criteri semplicemente non funzioni.

Dai un'occhiata al programma "caspol.exe" (fornito con runtime .NET).Dovrai farlo sul computer da cui stai tentando di eseguire l'applicazione.Non sono riuscito a "contrassegnare" e assemblare (probabilmente solo io).Tuttavia, utilizzando Caspol e impostando l'autorizzazione corretta per la mia app, LocalIntranet_Zone, risolvo il mio problema simile.

Ho sentito (ma non l'ho ancora provato) che .NET 3.5 sp1 ha rimosso questo rigido requisito di sicurezza (non consentendo agli assembly .NET di risiedere su una condivisione per impostazione predefinita).

Penso che tu voglia aggiungere il Consenti chiamate parzialmente attendibili attribuire alla tua assemblea.Il messaggio di errore implica che qualcosa che chiama l'assembly boo.exe non è completamente attendibile e boo.exe non dispone di questo attributo che lo consente.

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