ASP.NET 4.0 e cambiamenti nella Code Access Security

by Andrea 08 June 2010 06:17

In ASP.NET 4.0 sono stati apportati dei cambiamenti a livello di Code Access Security (CAS ).
Questi cambiamenti sono necessari ad apportare maggiore sicurezza e controllo nell'esecuzione delle applicazioni. Di default, la configurazione della CAS di ASP.NET 4.0 è più restrittiva rispetto alle versioni precedenti, e questo può essere causa di eccezzioni nel caso applicazioni esistenti (che utilizzano versioni precedenti del framework) vengano pubblicate su hosting con la versione 4.0 del framework.

Nel mio caso mi sono ritrovato con la seguente eccezzione:

System.TypeInitializationException:
The type initializer for 'PingFM.PingFMApi' threw an exception.
---> System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
at System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap, StackCrawlMark& stackMark) at System.Security.CodeAccessPermission.Demand()
at System.Reflection.RuntimeAssembly.VerifyCodeBaseDiscovery(String codeBase)
at System.Reflection.RuntimeAssembly.GetName(Boolean copiedName)
at System.Reflection.Assembly.GetName()
at PingFM.PingFMApi..cctor()
--- End of inner exception stack trace ---
at BlogEngineToPingFm.Ping(Post item, Uri itemUrl, ExtensionSettings settings)

Una possibile soluzione è modificare la configurazione dell'applicazione, in modo che la CAS abbia lo stesso comportemento delle precedenti versioni di ASP.NET.
Per fare ciò, nel file web.config sarà necessario valorizzare l'attributo legacyCasModel a True, presente nell'elemento trust. (Prestate attenzione al livello di trust che andate ad utilizzare)

<system.web>
    <trust level="Medium" legacyCasModel="true" />
</system.web>

Per maggiori informazioni sull'argomento, cosiglio la lettura dei seguenti link:
Code Access Security in ASP.NET 4 Applications 
What is New in ASP.NET 4.0 Code Access Security
Changes to the ASP.NET Code Access Security (CAS) Implementation

Tags:

.NET | ASP .NET

Comments are closed