views:

219

answers:

1

I've upgraded an ASP.Net Web application to the latest build of Fluent NHibernate (1.0.0.636) and the newest version of NHibernate (v2.1.2.4000). I've checked a couple of times that the application is running in Full trust. But I keep getting the following error:

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

Anyone had a similar error? I've seach the web / stackoverflow / NHibernate forums but only found people who had a problem when running in medium trust mode, not full trust. I've been developing for several months on this application on this machine with previous versions of Fluent NHibernate and NHibernate.

The machine I'm running this on is 64-bit, you never know that this is relevant.

+6  A: 

When you first download a new DLL you can have this issue, it may not be your same issue (anything that makes it untrusted causes the same error) but, it's caused the exact error for me more than once. Here's how to get it running in full trust like the rest of your application again:

  • Right click the new nHibernate DLLs (might have to do this 1 at a time, not sure)
  • Properties
  • At the very bottom of the General tab, you may see a message: "This file came from another computer and may be blocked to help protect this computer".
  • Click Unblock beside that
Nick Craver
That was spot on, thanks a lot! I've never seen that 'Unblock' option before.
PeterEysermans