2010-05-08 16 views
8

Sto sviluppando un'applicazione ASP.NET MVC con NHibernate e sto cercando di utilizzare Automapper per nascondere gli oggetti di dominio dal DTO oggetti inviati alla vista:Come si elimina l'errore SecurityException quando si tenta di utilizzare Automapper in ASP.NET MVC?

  1. ClassLibrary con il mio dominio (per NHibernate) e DTO oggetti
  2. libreria di classi per fare un SessionFactory e fabbriche nel mio progetto

ho scaricato automapper di trasformare gli oggetti di dominio in DTO e aggiunto il codice per fare questo in Application_Start.

Quando eseguo l'app in VisualStudio (premendo F5), funziona correttamente e i DTO sono mappati nella vista.

Quando pubblico presente in IIS, ottengo un'eccezione di sicurezza:

Mapper.CreateMap<Category, CategoryDto>(); 
Mapper.CreateMap<Product, ProductDto>(); 

System.Security.SecurityException: impossibile richiesta di autorizzazione di tipo 'System.Security.Permissions.ReflectionPermission, mscorlib, Versione = 2.0.0.0, Cultura = neutrale, PublicKeyToken = b77a5c561934e089 '.

Come posso far funzionare Automapper senza l'eccezione di sicurezza?

risposta

3

è necessario eseguire IIS in piena fiducia, al fine di avere il permesso di riflessione, guarda qui reflection permission

o qui set trust level

you need this because Automapper uses reflection to emit code o_O 
13

Fare clic destro sul AutoMapper.dll> selezionare Proprietà> Sbloccare.

quindi riavviare IIS

+0

Grazie amico, ci proverò anche io! –

+0

Ero già in esecuzione in piena fiducia ed ero sconcertato fino a quando ho capito che il mio AutoMapper.dll era "bloccato". Buona pesca. – daveidmx

+0

Ho dovuto rimuovere il riferimento dal mio progetto e aggiungerlo di nuovo dopo averlo sbloccato per farlo funzionare. –

0

sbloccare la dll (come detto da Lee, Fare clic destro sul AutoMapper.dll> selezionare Proprietà> Sblocca.), E poi basta riciclare app pool del sito. Non è necessario riavviare IIS.

Problemi correlati