Nhibernate не работает после обновления до версии 2.1.2 - PullRequest
3 голосов
/ 25 января 2010

Я недавно изменил свою реализацию NHibernate с версии 2.1.0 до 2.1.2. Для отложенной загрузки я использовал реализацию LinFu, используя: NHibernate.ByteCode.Linfu.

Поскольку я перешел на самую новую версию, я получил следующую ошибку:

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

При отладке я обнаружил следующую ошибку:

   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

Это из-за использования NHibernate.ByteCode.LinFu? Что я могу сделать, чтобы приложение снова заработало?

1 Ответ

0 голосов
/ 24 марта 2011

В тех случаях, когда у вас есть разные версии ссылок, то есть 2.1.0 и 2.1.2, вы можете настроить .net для перенаправления вызовов из старого в новый или наоборот, используя перенаправления сборок ...

<?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>

Однако я не думаю, что это проблема, поскольку ошибка совершенно иная. то есть исключение безопасности. «Эта сборка не допускает частично доверенных вызывающих программ», по-видимому, указывает на то, что любой запущенный процесс не имеет необходимых контекстных прав для выполнения кода в методе «NHibernate.ByteCode.LinFu.ProxyFactory..ctor ()». Возможно, вы запускаете приложение с использованием профиля клиента или в среде с частичным доверием.

У вас есть больше информации о контексте, в котором вы запускаете это приложение?

...