Può capitare di dover creare più applicazioni web per sfruttare più autenticazioni o in generale avere più controllo sulla stessa. Per evitare di duplicare più volte un assembly la miglior soluzione sarebbe quella di usare la GAC. Se non fosse possibile la sezione assemblyBinding permette di specificare il percorso di un assembly:
<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Ora" culture="" /> <codeBase version="1.0.0.0" href="file:///c:/Inetpub/wwwroot/prove/binding/Ora.dll"/> </dependentAssembly> </assemblyBinding> </runtime> AssemblyIdentity identifica l'assembly sul quale vogliamo agire. Accetta il culture (la lingua), name (il nome dell'assembly) e publicKeyToken (la chiave pubblica che permette di individuare l'assembly in modo veloce). Il tag codeBase indica dove è collocato l'assembly. L'attributo href può contenere anche un indirizzo internet, version invece identifica ulteriormente l'assembly per versione. Bisogna prestare attenzione all'utilizzo di questa funzione. Innanzitutto, la sezione runtime va inserita nella cartella principale dell'applicazione web e non in cartelle non dichiarate come applicazioni in IIS (il CLR non segnala alcun errore). Nel caso l'assembly non abbia uno strong name, dovrà essere collocato nella stessa directory dov'è presente il web.config o in sottocartelle (anche se configurate come applicazioni), per evitare che il CRL segnali un errore. Inoltre per far sì che il framework, quando elabora la nostra pagina, cerchi un assembly, è necessario referenziare lo stesso. Normalmente non c'è bisogno perché al primo avvio della nostra pagina, durante la compilazione automatica, gli assemblies da noi utilizzati vengono referenziati automaticamente, cercandoli nelle directory di probing. Quando utilizziamo il codeBase (codice in linea) questo non succede e perciò dobbiamo aggiungere la direttiva che segue alla nostra pagina: [code lang="aspx"]<%@ Assembly name="nomeassembly" %>
Questo problema non si verifica quando usiamo il codebehind e referenziamo la DLL in fase di compilazione.
Commenti
Sfruttare un assembly da più applicazioni ASP.NET senza utilizzare la GAC (#490) 140
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Effettuare il tracing asincrono delle chiamate a un'applicazione ASP.NET Core
Migliorare la nostra produttività con ASP.NET Core e live reload
Eseguire lo shutdown pulito di un'applicazione ASP.NET Core
.NET Conference Italia 2020
Correlare i log in un'applicazione distribuita con ASP.NET Core
Eseguire del codice personalizzato al click di una checkbox in Blazor
Eseguire integration test di un progetto ASP.NET Core
L'agenda di #netconfit è online => https://aspit.co/netconfit-20 3 track, tante sessioni e una keynote speciale di @shanselman per la più importante conferenza in lingua italiana su .NET! Vi aspettiamo il 24/11. Iscrizioni sempre aperte! #donet #aspnet #netconf
Creare API GraphQL con ASP.NET Core e HotChocolate
Rigenerare il database negli integration test di ASP.NET Core
Restituire il correlation ID in caso di errore in ASP.NET Core Web API