Как мне избавиться от ошибки SecurityException при попытке использовать Automapper в ASP.NET MVC?

Я разрабатываю приложение ASP.NET MVC с NHibernate, и я пытаюсь использовать Automapper, чтобы скрыть объекты домена от объектов DTO, отправленных в представление:

  1. ClassLibrary с моим доменом (для NHibernate) и объектами DTO
  2. Библиотека классов для создания SessionFactory и фабрик в моем проекте

Я загрузил AutoMapper для преобразования объектов домена в DTO и добавил код для этого в Application_Start.

Когда я запускаю приложение в VisualStudio (нажав F5), оно работает нормально, и мои DTO отображаются в представлении.

Когда я публикую это в IIS, я получаю исключение безопасности:

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

System.Security.SecurityException: неудачный запрос разрешения типа «System.Security.Permissions.ReflectionPermission, mscorlib, Version = 2.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089».

Как заставить Automapper работать без исключения безопасности?


person Felipe Oriani    schedule 08.05.2010    source источник


Ответы (3)


вам необходимо запустить свой IIS с полным доверием, чтобы иметь разрешение на отражение, посмотрите здесь разрешение на отражение

или здесь установите уровень доверия

you need this because Automapper uses reflection to emit code o_O
person Omu    schedule 08.05.2010

Щелкните правой кнопкой мыши AutoMapper.dll> выберите свойства> Разблокировать.

Затем перезапустите IIS

person Lee Smith    schedule 20.05.2010
comment
Я уже работал с полным доверием и был сбит с толку, пока не понял, что мой AutoMapper.dll заблокирован. Хороший улов. - person daveidmx; 24.06.2010
comment
Мне пришлось удалить ссылку из моего проекта и снова добавить ее после разблокировки, чтобы заставить это работать. - person Samuel Jack; 27.10.2010
comment
Спасибо, я разблокировал IIS, но не сбросил его. Теперь работает после iisreset. - person CRice; 07.12.2010
comment
Вы ДОЛЖНЫ перезапустить IIS, вы не можете просто разблокировать и перекомпилировать свой сайт. - person sdanna; 09.02.2011

Разблокируйте dll (как упомянул Ли, щелкните правой кнопкой мыши AutoMapper.dll> выберите свойства> Разблокировать.), А затем просто перезапустите пул приложений сайта. Не нужно перезапускать IIS.

person Gokulnath    schedule 11.07.2011