2011-02-09 4 views
0

Я использую NHibernate 2.1.2 через Castl ActiveRecord. Я хотел настроить кеш второго уровня, используя SysCache. Но у меня возникла ошибка:Невозможно лить объект типа «NHibernate.Caches.SysCache.SysCacheProvider» для ввода «NHibernate.Cache.ICacheProvider»

Невозможно передать объект типа «NHibernate.Caches.SysCache.SysCacheProvider» для ввода «NHibernate.Cache.ICacheProvider».

Как это исправить?

+0

Это не должно быть проблемой. Мы используем этот провайдер без каких-либо проблем. Как вы его настроили? Вы используете ActiveRecordFacility? – jishi

+5

Звучит как несоответствие версии. Удостоверьтесь, что сборщик кэша является единственным для NHibernate 2.1.2 –

+0

@Mauricio: Я использую NHibernate 2.1.2.4000, Castle.ActiveRecord 2.1.2.6725 и NHibernate.Caches.SysCache 2.1.2.4000. Это проблема? –

ответ

0

Я нашел причину. Это была неприятная проблема. Моя команда объединила все связанные с 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 вместо этого все прошло нормально.

Спасибо всем пользователям, которые пытались мне помочь.

1

Я предполагаю, что у вас есть некоторые сборки локально в вашем проекте, а другие в GAC, которые имеют несоответствие версии, как говорит Маурицио. Убедитесь, что файл NHibernate.Caches.SysCache.dll находится в папке bin (для вашего сайта), является правильной версией и проверьте, нет ли у вас в GAC.

 Смежные вопросы

  • Нет связанных вопросов^_^