无法将“NHibernate.Caches.SysCache.SysCacheProvider”类型的对象强制转换为“NHibernate.Cache.ICacheProvider”类型

时间:2011-02-09 13:03:20

标签: nhibernate caching castle-activerecord syscache

我通过Castl ActiveRecord使用NHibernate 2.1.2。我想使用SysCache设置二级缓存。但我得到了错误:

无法将'NHibernate.Caches.SysCache.SysCacheProvider'类型的对象强制转换为'NHibernate.Cache.ICacheProvider'。

我该如何纠正?

2 个答案:

答案 0 :(得分:1)

我猜你的项目中有一些本地程序集,而GAC中的其他程序集正如Mauricio所说的版本不匹配。确保NHibernate.Caches.SysCache.dll位于您的bin文件夹中(对于您的网站),版本是否正确,并检查您是否在GAC中没有它。

答案 1 :(得分:0)

我找到了原因。这是我们的一个令人讨厌的问题。我的团队已将所有Castle ActiveRecord相关程序集与ilmerge.exe合并,并假设将其命名为Company.NHibernate.dll。我尚未将NHibernate.Caches.SysCache.dllCompany.NHibernate.dll合并。我刚刚将NHibernate.Caches.SysCache.dll放在Company.NHibernate.dll旁边,并在NHibernate.Caches.SysCache中提到provider_class的名称。

当我将NHibernate.Caches.SysCache.dllCompany.NHibernate.dll合并并在Company.NHibernate.dll中提到provider_class的名称时,一切都很顺利。

感谢所有试图帮助我的用户。