Инициализатор типа для 'NHibernate.LoggerProvider' вызвал исключение - PullRequest
8 голосов
/ 24 ноября 2011

Я пытаюсь использовать сборку Common.Logging для замены ведения журнала nHibernate Log4net по умолчанию.

Я добавил ссылку в свой проект для:Common.Logging.dll v2.0NHibernate.Logging.CommonLogging.dll v1.2.0.4000и затем добавил следующее в мой Web.config:

<add key="nhibernate-logger" value="NHibernate.Logging.CommonLogging.CommonLoggingLoggerFactory, Hibernate.Logging.CommonLogging"/>

Моя главная цель - заменить ведение журнала Log4net на Enterprise Library 5.0, но сейчас я просто делаю это шаг за шагом..

Когда я запускаю свое приложение сейчас, я получаю следующее исключение:

The type initializer for 'NHibernate.Cfg.Configuration' threw an exception. =>
The type initializer for 'NHibernate.LoggerProvider' threw an exception. =>
The type initializer for 'NHibernate.LoggerProvider' threw an exception. =>
Unable to instantiate: =>
Value cannot be null.\r\nParameter name: type
 at NHibernate.LoggerProvider.LoggerFor(Type type)
 at NHibernate.Cfg.Configuration..cctor()

Есть ли что-то, чего мне не хватает, чтобы использовать Common.Logging с nHibernate?Я пытался следовать инструкциям, найденным в Интернете, но он не работает, и я не могу найти решение: (

Я использую NHibernate v3.2.0.4000.

PS.Это мой самый первый пост на этом сайте, так что извините, если форматирование не правильно, я с радостью приму конструктивную критику: o)

Ответы [ 4 ]

8 голосов
/ 25 ноября 2011

переключатель Hibernate.Logging.CommonLogging с N Hibernate.Logging.CommonLogging

2 голосов
/ 14 декабря 2012

Если вы работаете с Windows Server 2008 и используете NHibernate 3.0+, убедитесь, что у вас установлен .Net 3.5 и что aspnet_regiis было выполнено для .net framework (или frameworkx64) 2.0. Также, если это веб-сайт, убедитесь, что он работает в классическом пуле приложений .net, а не в пуле приложений по умолчанию.

NHibernate 3.0+ требуется .net 3.0 и выше.

2 голосов
/ 26 января 2012

попробуйте установить пакет NHibernate.Logging из NuGet (или ссылаться на библиотеку, если вы не используете NuGet).Работал на меня.

Ура.

0 голосов
/ 11 августа 2015

Короткая версия

Проверьте, соответствует ли имя сборки вашего проекта значению nhibernate-logger в вашем web.config

Длинная версия

Это старый вопрос, но я столкнулся с ним, когда у меня была такая же ошибка. В моем случае проблема была вызвана тем, что я переименовал проект, в котором находился NLogFactory, и изменил web.config, чтобы отразить это, но забыл изменить имя сборки проекта.

То есть я переименовал свой проект с CDP.Core на ARR.Code, вошел в свой web.config, чтобы изменить

<add key="nhibernate-logger" value="CDP.Core.DBContext.Framework.NLogFactory, CDP.Core" />

Кому:

<add key="nhibernate-logger" value="ARR.Core.DBContext.Framework.NLogFactory, ARR.Core" />

Но забыли зайти в свойства проекта, на вкладку «Приложение», и заменить «Имя сборки» на новое имя.

...