我正在尝试使用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)
答案 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;新名称。