Convalida del nome sicuro non riuscita. (Eccezione da HRESULT: 0x80131...

martedì 15 gennaio 2008 - 08.32

jesus_was_rasta Profilo | Newbie

Ciao a tutti! :-)
Sto litigando con un problema del menga, spero di trovare aiuto e conforto... :-S

Vi spiego al situazione brevemente.
Ho un piccolo progetto (un exe più una pletora di dll che fungono da plugin) che viene richiamato da un gestionale, sia in locale che in rete. Per problemi di deploy da parte dei nostri distributori (il sw va a finire in reti ed infrastrutture anche piùttosto complesse per quanto riguarda policy di sicurezza) sono solito firmare gli assembly con nome sicuro, e poi installare una policy fulltrust sui client affinché tutti gli assembly con quella determinatya chiave pubblica possano essere eseguiti anche in rete locale, senza dover settare a mano policy o altre menate.
Funziona tutto bene, ma ora ho un errore cercando di caricare un assembly sviluppato e firmato da terze parti.
In pratica la situazione è questa: ho un mio assembly che referenzia una libreria mia di codice condiviso la quale, a sua volta, referenzia un assembly di terze parti: mio_plugin->libreria_condivisa->assembly_di_terze_parti.

In questa situazione, cercando di caricare mio_plugin ottengo la seguente eccezione (sia lanciandolo da locale sul mio PC che da rete):

[quote]---[20080115-084230] Exception Data Report----------------------------
# Exception Type: System.IO.FileLoadException
# Message: Impossibile caricare il file o l'assembly 'xxx, Version=1.3.0.0, Culture=neutral, PublicKeyToken=7db0fef4fgr4g5t1' o una delle relative dipendenze. Convalida del nome sicuro non riuscita. (Eccezione da HRESULT: 0x8013141A)
...
Area dell'assembly con errori:
MyComputer

# TargetSite: System.Reflection.Assembly nLoad(System.Reflection.AssemblyName, System.String, System.Security.Policy.Evidence, System.Reflection.Assembly, System.Threading.StackCrawlMark ByRef, Boolean, Boolean)
# Method: nLoad
# Source: mscorlib
# StrackTrace: in System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
in System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
in System.Reflection.Assembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, StackCrawlMark& stackMark)
in System.Reflection.Assembly.LoadFrom(String assemblyFile)
in ...
--- END --------------------------------------------------------------[/quote]

Le policy sul mio computer locale sono quelle di default; l'assemblly di terze parti è formato, ed ho provato anche per esso ad installare una policy che consenta l'utilizzo di assembly firmati con la sua chiave pubblica.
In GAC non ho messo nulla di mio, ne la libreira di terze parti; c'ho provato a metterla, ma non cambia nulla...
Se dereferenzio la libreria di codice che richiama l'assembly di terze parti funziona tutto.
Il mio_plugin è firmato con la stessa chiave pubblica che uso per tutti i miei assembly, non ha niente di strano...

Non so se ho spiegato bene la mia situazione...
Qualcuno ha idea su come uscire da questa empasse?
Giocare con policy o GAC?
Inglobare l'assembly di terze parti nella librira di codice condiviso?

Please ehelp! :-(
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5