8 Stimmen

Wie kann ich den SecurityException-Fehler loswerden, wenn ich versuche, Automapper in ASP.NET MVC zu verwenden?

Ich entwickle eine ASP.NET MVC-Anwendung mit NHibernate und ich versuche, Automapper zu verwenden, um die Domänenobjekte aus den DTO-Objekten auszublenden, die an die Ansicht gesendet werden:

  1. ClassLibrary mit meiner Domain (für NHibernate) und DTO-Objekten
  2. Klassenbibliothek zur Erstellung einer SessionFactory und Fabriken in meinem Projekt

Ich habe AutoMapper heruntergeladen, um Domänenobjekte in DTO zu transformieren, und den entsprechenden Code in Application_Start .

Wenn ich die Anwendung in VisualStudio ausführe (durch Drücken von F5), funktioniert sie einwandfrei und meine DTOs werden der Ansicht zugeordnet.

Wenn ich dies in IIS veröffentliche, erhalte ich eine Sicherheitsausnahme:

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

System.Security.SecurityException: Fehlgeschlagene Anfrage für die Berechtigung vom Typ 'System.Security.Permissions.ReflectionPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

Wie kann ich Automapper ohne die Sicherheitsausnahme zum Laufen bringen?

13voto

Lee Smith Punkte 5883

Klicken Sie mit der rechten Maustaste auf die Datei AutoMapper.dll > wählen Sie Eigenschaften > Freigeben.

Starten Sie dann den IIS neu

3voto

Omu Punkte 67085

Sie müssen Ihren IIS mit vollem Vertrauen betreiben, um die Reflection-Berechtigung zu erhalten, siehe hier Reflexionsgenehmigung

oder hier Vertrauensstufe festlegen

you need this because Automapper uses reflection to emit code o_O

0voto

Gokulnath Punkte 1040

Heben Sie die Blockierung der DLL auf (wie von Lee erwähnt, klicken Sie mit der rechten Maustaste auf die AutoMapper.dll > wählen Sie Eigenschaften > Blockierung aufheben), und recyceln Sie dann einfach den App-Pool der Website. Ein Neustart des IIS ist nicht erforderlich.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X