NHibernate的3.3和SysCache(NHibernate 3.3 and SysCach

2019-06-24 06:06发布

SysCache的当前版本不会出现与NHibernate 3.3的工作。 我更换了NHibernate的DLL文件在我的网站/ bin目录,离开了SysCache DLL(其中有3.2作品)不变。 现在,当IIS试图做它加载的dll SysCache预先绑定,并试图将其绑定到NHibernate的3.2.0.4000和失败。

[FileLoadException:未能加载文件或程序集“NHibernate的,版本= 3.2.0.4000文化=中性公钥= aa95f207798dfdb4”或它的一个依赖。 在位于集清单定义不匹配的程序集引用。 (从HRESULT异常:0x80131040)] System.RuntimeTypeHandle.GetTypeByName(字符串名称,布尔throwOnError,布尔IGNORECASE,布尔reflectionOnly,StackCrawlMarkHandle stackMark,布尔loadTypeFromPartialName,ObjectHandleOnStack型)0
System.RuntimeTypeHandle.GetTypeByName(字符串名称,布尔throwOnError,布尔IGNORECASE,布尔reflectionOnly,StackCrawlMark&stackMark,布尔loadTypeFromPartialName)+95
System.RuntimeType.GetType(字符串的typeName,布尔throwOnError,布尔IGNORECASE,布尔reflectionOnly,StackCrawlMark&stackMark)54 System.Type.GetType(字符串的typeName)50 NHibernate.Util.ReflectHelper.TypeFromAssembly(AssemblyQualifiedTypeName名,布尔throwOnError)338
NHibernate.Cfg.SettingsFactory.CreateCacheProvider(IDictionary`2属性)175

[HibernateException的:不能实例化的CacheProvider:NHibernate.Caches.SysCache.SysCacheProvider,NHibernate.Caches.SysCache]
NHibernate.Cfg.SettingsFactory.CreateCacheProvider(IDictionary的2 properties) +256
NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary
2 properties) +256
NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary
2 properties) +256
NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary
2个属性)3449个NHibernate.Cfg.Configuration.BuildSettings()29 NHibernate.Cfg.Configuration.BuildSessionFactory()44

如果我注释掉在web.config配置一切都很好:

<property name="cache.use_second_level_cache">true</property>
<property name="cache.use_query_cache" >true</property>
<property name="cache.provider_class">NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache</property>

下载网站在NHibernate的高速缓存的NHibernate的Contrib没有下载最新的版本。

Answer 1:

这个问题可能是,SysCache DLL是使用NHibernate 3.2.0建立,这是不是与NHibernate 3.3.0兼容。 解决这个一个简单的方法是只从检出NHibernate的配置项目或Cache解决方案的主干https://nhcontrib.svn.sourceforge.net/svnroot/nhcontrib/trunk/src/NHibernate.Caches更新NHibernate的参考使用您正在使用,然后重建,并使用最新的高速缓存的DLL版本。 由于它是一个小的升级有不应该是需要改动任何代码,你应该是安全的。

试试吧,让我知道如何去。



Answer 2:

一种不同的和稍微更简单的方法是重写参照3.2在您的版本的NHibernate web.configapp.config与参考到所需的版本3.3 ,如下所示:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="NHibernate" culture="neutral" publicKeyToken="aa95f207798dfdb4" />
      <bindingRedirect newVersion="3.3.0.4000" oldVersion="0.0.0.0-3.3.0.4000" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

我只是尝试这样做我自己,它按预期工作。



文章来源: NHibernate 3.3 and SysCache