无法强制转换类型为';NHibernate.Caches.SysCache.SysCacheProvider';输入';NHibernate.Cache.ICacheProvider';

无法强制转换类型为';NHibernate.Caches.SysCache.SysCacheProvider';输入';NHibernate.Cache.ICacheProvider';,nhibernate,caching,castle-activerecord,syscache,Nhibernate,Caching,Castle Activerecord,Syscache,我正在通过Castl ActiveRecord使用NHibernate 2.1.2。我想使用SysCache设置二级缓存。但我有一个错误: 无法将类型为“NHibernate.Caches.SysCache.SysCacheProvider”的对象强制转换为类型为“NHibernate.Cache.ICacheProvider” 我怎样才能纠正这个问题呢?我猜您的项目中有一些本地程序集,而GAC中的其他程序集版本不匹配,正如Mauricio所说。确保NHibernate.Caches.SysCa

我正在通过Castl ActiveRecord使用NHibernate 2.1.2。我想使用
SysCache
设置二级缓存。但我有一个错误:

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


我怎样才能纠正这个问题呢?

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

我找到了原因。这是我们的一个棘手问题。我的团队已将所有与Castle ActiveRecord相关的程序集与
ilmerge.exe
合并在一起,并假设将其命名为
Company.NHibernate.dll
。我没有将
NHibernate.Caches.SysCache.dll
Company.NHibernate.dll
合并。我刚刚把
NHibernate.Caches.SysCache.dll
放在
Company.NHibernate.dll
旁边,并在
provider\u class
中提到了
NHibernate.Caches.SysCache
的名称

当我将
NHibernate.Caches.SysCache.dll
Company.NHibernate.dll
合并,并在
provider\u类
中提到
Company.NHibernate.dll
的名称时,一切正常


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

这应该不是问题。我们正在使用该提供商,没有任何问题。您是如何配置它的?您正在使用ActiveRecordFacility吗?听起来像是版本不匹配。确保缓存提供程序程序集是NHibernate 2.1的程序集。2@Mauricio:我正在使用NHibernate 2.1.2.4000、Castle.ActiveRecord 2.1.2.6725和NHibernate.Caches.SysCache 2.1.2.4000。是问题吗?@jishi:我的配置基于以下几点:我没有使用
ActiveRecordFacility