'NHibernate.LoggerProvider'的类型初始值设定项引发了异常

时间:2011-11-24 18:09:49

标签: nhibernate common.logging

我正在尝试使用Common.Logging程序集来替换默认的nHibernate Log4net日志记录。

我在项目中添加了一个引用:
Common.Logging.dll v2.0
NHibernate.Logging.CommonLogging.dll v1.2.0.4000

然后将以下内容添加到我的Web.config:

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

我的最终目标是用Enterprise Library 5.0替换Log4net日志记录,但我现在只是一步一步。

当我现在运行我的应用程序时,我得到以下异常:

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()

我是否缺少使用带有nHibernate的Common.Logging?我已经尝试按照我在网上找到的说明但是它无法正常工作,我找不到解决方案:(

我正在使用NHibernate v3.2.0.4000。

PS。这是我在这个网站上的第一篇文章很抱歉,如果格式不正确,我会接受建设性的批评:o)

4 个答案:

答案 0 :(得分:8)

使用 N Hibernate.Logging.CommonLogging

切换 Hibernate.Logging.CommonLogging

答案 1 :(得分:2)

尝试从NuGet安装NHibernate.Logging包(或者如果你不使用NuGet则引用库)。为我工作。

干杯。

答案 2 :(得分:2)

如果您在Windows Server 2008上运行解决方案并使用NHibernate 3.0+,请确保已安装.Net 3.5并且已为.net framework(或frameworkx64)2.0执行了aspnet_regiis。此外,如果它是一个网站,请确保它在经典的.net应用程序池上运行,而不是默认的应用程序池。

NHibernate 3.0+需要.net 3.0及以上版本。

答案 3 :(得分:0)

短版

检查您的项目的程序集名称是否与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" />

但忘了进入项目属性,&#34;应用程序&#34;选项卡,并更改&#34;程序集名称&#34;新名称。