Невозможно привести объект типа "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.

Другие вопросы по тегам