And*_*ler 16 nhibernate syscache
当前版本的SysCache似乎不适用于NHibernate 3.3.我在我的web/bin目录中替换了NHibernate dll,并且保持了SysCache dll(与3.2一起工作).现在当IIS尝试进行预绑定时,它会加载SysCache dll并尝试将其绑定到NHibernate 3.2.0.4000并失败.
[FileLoadException:无法加载文件或程序集'NHibernate,Version = 3.2.0.4000,Culture = neutral,PublicKeyToken = aa95f207798dfdb4'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(来自HRESULT的异常:0x80131040)] System.RuntimeTypeHandle.GetTypeByName(String name,Boolean throwOnError,Boolean ignoreCase,Boolean reflectionOnly,StackCrawlMarkHandle stackMark,Boolean loadTypeFromPartialName,ObjectHandleOnStack type)+0
System.RuntimeTypeHandle.GetTypeByName(String name,Boolean throwOnError,Boolean ignoreCase,Boolean reflectionOnly,StackCrawlMark&stackMark,Boolean loadTypeFromPartialName)+95
System.RuntimeType.GetType(String typeName,Boolean throwOnError,Boolean ignoreCase,Boolean reflectionOnly,StackCrawlMark&stackMark)+54 System.Type.GetType(String typeName)+50 NHibernate.Util .ReflectHelper.TypeFromAssembly(AssemblyQualifiedTypeName name,Boolean throwOnError)+338
NHibernate.Cfg.SettingsFactory.CreateCacheProvider(IDictionary`2 properties)+175[HibernateException:无法实例化CacheProvider:NHibernate.Caches.SysCache.SysCacheProvider,NHibernate.Caches.SysCache]
NHibernate.Cfg.SettingsFactory.CreateCacheProvider(IDictionary 2 properties)+3449 NHibernate.Cfg.Configuration.BuildSettings()+29 NHibernate.Cfg .Configuration.BuildSessionFactory()+ 442 properties) +256
NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary
如果我在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>
Run Code Online (Sandbox Code Playgroud)
NHibernate Contrib的 NHibernate缓存下载站点没有最新版本的下载.
Oli*_*ver 27
一种不同且稍微简单的方法是覆盖对3.2您的NHibernate版本的引用,web.config或者app.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>
Run Code Online (Sandbox Code Playgroud)
我自己试过这个,它按预期工作.
问题可能是SysCache Dll是使用NHibernate 3.2.0构建的,它与NHibernate 3.3.0不兼容.一个简单的方法是只从https://nhcontrib.svn.sourceforge.net/svnroot/nhcontrib/trunk/src/NHibernate.Caches 更新NHibernate引用来检查nhibernate配置项目的主干或Cache解决方案.您正在使用的版本,然后重建并使用最新的缓存dll.由于它是次要的升级,因此不需要进行任何代码更改,您应该是安全的.
试一试,让我知道它是怎么回事.
| 归档时间: |
|
| 查看次数: |
7589 次 |
| 最近记录: |