Невозможно привести объект типа "NHibernate.Caches.SysCache.SysCacheProvider" к типу "NHibernate.Cache.ICacheProvider".
Я использую NHibernate 2.1.2
через Castl ActiveRecord. Я хотел настроить кэш второго уровня, используя SysCache
, Но я получил ошибку:
Невозможно привести объект типа "NHibernate.Caches.SysCache.SysCacheProvider" к типу "NHibernate.Cache.ICacheProvider".
Как я могу это исправить?
2 ответа
Я нашел причину. Это была неприятная проблема с нашей стороны. Моя команда объединила все связанные с Castle ActiveRecord сборки вместе с ilmerge.exe
и предположим, назвал это Company.NHibernate.dll
, Я не слился NHibernate.Caches.SysCache.dll
с Company.NHibernate.dll
, Я только что положил NHibernate.Caches.SysCache.dll
рядом с Company.NHibernate.dll
и упомянутое имя NHibernate.Caches.SysCache
в provider_class
,
Когда я слился NHibernate.Caches.SysCache.dll
с Company.NHibernate.dll
и упомянутое имя Company.NHibernate.dll
в provider_class
вместо этого все прошло хорошо.
Спасибо всем пользователям, которые пытались мне помочь.
Я предполагаю, что у вас есть некоторые сборки локально в вашем проекте и другие в GAC, которые имеют несоответствие версий, как говорит Маурисио. Убедитесь, что NHibernate.Caches.SysCache.dll находится в папке bin (для вашего веб-сайта), является правильной версией и убедитесь, что ее нет в GAC.