(Свободно) Исключение безопасности NHibernate - ReflectionPermission

Я обновил веб-приложение ASP.Net до последней версии Fluent NHibernate (1.0.0.636) и новейшей версии NHibernate (v2.1.2.4000). Я пару раз проверял, что приложение работает в режиме полного доверия. Но я продолжаю получать следующую ошибку:

Security Exception
Description: The application attempted to perform an operation not allowed by the security policy.  To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.

Exception Details: System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.ReflectionPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[SecurityException: Request for the permission of type 'System.Security.Permissions.ReflectionPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
   System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) +0
   System.Security.CodeAccessPermission.Demand() +54
   System.Reflection.Emit.DynamicMethod.PerformSecurityCheck(Type owner, StackCrawlMark& stackMark, Boolean skipVisibility) +269
   System.Reflection.Emit.DynamicMethod..ctor(String name, Type returnType, Type[] parameterTypes, Type owner, Boolean skipVisibility) +81
   NHibernate.Bytecode.Lightweight.ReflectionOptimizer.CreateDynamicMethod(Type returnType, Type[] argumentTypes) +165
   NHibernate.Bytecode.Lightweight.ReflectionOptimizer.GenerateGetPropertyValuesMethod(IGetter[] getters) +383
   NHibernate.Bytecode.Lightweight.ReflectionOptimizer..ctor(Type mappedType, IGetter[] getters, ISetter[] setters) +108
   NHibernate.Bytecode.Lightweight.BytecodeProviderImpl.GetReflectionOptimizer(Type mappedClass, IGetter[] getters, ISetter[] setters) +52
   NHibernate.Tuple.Component.PocoComponentTuplizer..ctor(Component component) +231
   NHibernate.Tuple.Component.ComponentEntityModeToTuplizerMapping..ctor(Component component) +420
   NHibernate.Tuple.Component.ComponentMetamodel..ctor(Component component) +402
   NHibernate.Mapping.Component.BuildType() +38
   NHibernate.Mapping.Component.get_Type() +32
   NHibernate.Mapping.SimpleValue.IsValid(IMapping mapping) +39
   NHibernate.Mapping.RootClass.Validate(IMapping mapping) +61
   NHibernate.Cfg.Configuration.ValidateEntities() +220
   NHibernate.Cfg.Configuration.Validate() +16
   NHibernate.Cfg.Configuration.BuildSessionFactory() +39
   FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() in d:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentConfiguration.cs:93

У кого-нибудь была похожая ошибка? Я посещал форумы web / stackru / NHibernate, но нашел только людей, у которых были проблемы при работе в режиме среднего доверия, но не с полным доверием. В течение нескольких месяцев я разрабатывал это приложение на этой машине с предыдущими версиями Fluent NHibernate и NHibernate.

Машина, на которой я работаю, является 64-битной, вы никогда не знаете, что это актуально.

1 ответ

Решение

Когда вы впервые загружаете новую DLL, у вас может возникнуть эта проблема, она может быть не той же самой (все, что делает ее ненадежной, вызывает ту же ошибку), но она вызвала точную ошибку для меня не раз. Вот как снова запустить его с полным доверием, как и остальная часть вашего приложения:

  • Щелкните правой кнопкой мыши новые библиотеки nHibernate (возможно, придется делать это по одному, не уверен)
  • свойства
  • В самом низу вкладки " Общие " вы можете увидеть сообщение: "Этот файл поступил с другого компьютера и может быть заблокирован для защиты этого компьютера".
  • Нажмите Разблокировать рядом с этим
Другие вопросы по тегам