无法强制转换类型为';NHibernate.Caches.SysCache.SysCacheProvider';输入';NHibernate.Cache.ICacheProvider';
我正在通过Castl ActiveRecord使用NHibernate 2.1.2。我想使用无法强制转换类型为';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
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
。