2010-01-25 4 views
3

J'ai récemment modifié mon implémentation de NHibernate de la version 2.1.0 vers la version 2.1.2. Pour le chargement paresseux, j'ai utilisé l'implémentation LinFu en utilisant: NHibernate.ByteCode.Linfu.Nhibernate ne fonctionne pas après la mise à niveau vers la version 2.1.2

Depuis que je changé à la dernière version j'ai eu l'erreur suivante:

[SecurityException: That assembly does not allow partially trusted callers.] 
    NHibernate.ByteCode.LinFu.ProxyFactory..cctor() +0 

Lorsque le débogage je suis venu à l'erreur suivante:

at NHibernate.ByteCode.LinFu.ProxyFactory..ctor() 
    at NHibernate.ByteCode.LinFu.ProxyFactoryFactory.BuildProxyFactory() 
    at NHibernate.Tuple.Entity.PocoEntityTuplizer.BuildProxyFactoryInternal(PersistentClass class, IGetter getter, ISetter setter) 
    at NHibernate.Tuple.Entity.PocoEntityTuplizer.BuildProxyFactory(PersistentClass persistentClass, IGetter idGetter, ISetter idSetter) 
    at NHibernate.Tuple.Entity.AbstractEntityTuplizer..ctor(EntityMetamodel entityMetamodel, PersistentClass mappingInfo) 
    at NHibernate.Tuple.Entity.PocoEntityTuplizer..ctor(EntityMetamodel entityMetamodel, PersistentClass mappedEntity) 
    at NHibernate.Tuple.Entity.EntityEntityModeToTuplizerMapping..ctor(PersistentClass mappedEntity, EntityMetamodel em) 
    at NHibernate.Tuple.Entity.EntityMetamodel..ctor(PersistentClass persistentClass, ISessionFactoryImplementor sessionFactory) 
    at NHibernate.Persister.Entity.AbstractEntityPersister..ctor(PersistentClass persistentClass, ICacheConcurrencyStrategy cache, ISessionFactoryImplementor factory) 
    at NHibernate.Persister.Entity.SingleTableEntityPersister..ctor(PersistentClass persistentClass, ICacheConcurrencyStrategy cache, ISessionFactoryImplementor factory, IMapping mapping) 
    at NHibernate.Persister.PersisterFactory.CreateClassPersister(PersistentClass model, ICacheConcurrencyStrategy cache, ISessionFactoryImplementor factory, IMapping cfg) 
    at NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg, IMapping mapping, Settings settings, EventListeners listeners) 
    at NHibernate.Cfg.Configuration.BuildSessionFactory() 
    at MyApplication.SessionManager..ctor() in C:\Projects\MyApps\MyApplication\SessionManager.cs:line 75 

Est-ce à cause de l'utilisation de NHibernate.ByteCode .LinFu? Que puis-je faire pour que l'application fonctionne à nouveau?

+0

Avez-vous également mis à jour les bibliothèques dépendantes? (LinFu étant l'un d'entre eux) – hackerhasid

+1

http://stackoverflow.com/questions/1848342/allowing-partially-trusted-callers-security-exception-is-been-thrown-althought-ru –

+0

Je mets à jour Nhibernate.ByteCode.Linfu, la mise à jour de Linfu.DynamicProxy n'était pas nécessaire. En regardant le message référé j'ai également essayé d'utiliser ByteCode.Castle, mais cela ne fonctionne pas non plus. – Jan

Répondre

0

Dans le cas où vous avez la version différente des références à savoir 2.1.0 et 2.1.2, vous pouvez configurer .net pour rediriger les appels de l'ancien vers le nouveau ou vice-versa en utilisant l'assemblage ... réoriente

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly> 
       <assemblyIdentity name="Linfu.DynamicProxy" 
            publicKeyToken="32cd8f1a53a4c744" 
            culture="neutral" /> 
       <bindingRedirect oldVersion="1.0.0.0" 
           newVersion="1.1.0.0"/> 
      </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 

Cependant, je ne pense pas que ce soit le problème, car l'erreur est très différente. c'est-à-dire une exception de sécurité. "Cet assembly n'autorise pas les appelants partiellement approuvés" semble indiquer que quel que soit le processus en cours d'exécution n'a pas les autorisations de contexte nécessaires pour exécuter le code dans la méthode "NHibernate.ByteCode.LinFu.ProxyFactory..ctor()". Potentiellement, vous exécutez une application à l'aide de Client Profile ou dans un environnement Web «Partially Trusted».

Avez-vous plus d'information concernant le contexte dans lequel vous exécutez cette application?

Questions connexes