8

我正在尝试使用 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()

将 Common.Logging 与 nHibernate 一起使用时,我有什么遗漏吗?我已经尝试按照我在网上找到的说明进行操作,但它不起作用,我找不到解决方案:(

我正在使用 NHibernate v3.2.0.4000。

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

4

4 回答 4

8

N Hibernate.Logging.CommonLogging切换Hibernate.Logging.CommonLogging

于 2011-11-25T13:39:35.287 回答
3

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

干杯。

于 2012-01-26T04:21:28.680 回答
2

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

NHibernate 3.0+ 需要 .net 3.0 及更高版本。

于 2012-12-14T06:04:59.793 回答
1

精简版

检查您的项目的程序集名称是否与您的项目中的nhibernate-logger键中的值匹配web.config

长版

这是一个老问题,但是当我遇到同样的错误时,我遇到了它。在我的情况下,问题是因为我重命名了 所在的项目NLogFactory并更改了web.config以反映这一点,但忘记更改项目的程序集名称。

也就是说,我将我的项目从CDP.Coreto重命名为ARR.Code,进入我web.config的 to change

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

至:

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

但是忘记进入项目属性,“应用程序”选项卡,并将“程序集名称”更改为新名称。

于 2015-08-11T17:56:51.260 回答