2011-11-24 92 views
8

我正在嘗試使用Common.Logging程序集來替換默認的nHibernate Log4net日誌記錄。「NHibernate.LoggerProvider」的類型初始值設定項引發異常

我說在我的項目的參考:
Common.Logging.dll 2.0
NHibernate.Logging.CommonLogging.dll v1.2.0.4000

,然後添加以下到我的web.config :

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

我ulitmate目標是與企業庫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。這是我在這個網站很抱歉,如果格式是不正確的第一個職位,我會glady接受建設性的批評:O)

+1

我希望這個問題得到解答。這是我遇到的同樣的確切問題 – Mario

+0

這是回答,只是他沒有標記。其中一個一次性帳戶,只是想問一個問題。基本上,配置字符串是從教程中複製的,它有一個錯字。 '「,Hibernate.Logging。」'。它應該是'NHibernate.Logging' –

回答

8

開關Hibernate.Logging.CommonLoggingňHibernate.Logging.CommonLogging

+0

我認爲我們遵循相同的網絡方法,並最終將他的錯字複製到我們自己的配置中。 –

+2

這應該是被接受的答案。 –

2

嘗試從NuGet安裝NHibernate.Logging包(或者如果您不使用NuGet,請參考庫)。爲我工作。

乾杯。

2

如果你在windows server 2008上運行你的解決方案,並且使用NHibernate 3.0+,請確保你已經安裝了.net 3.5並且已經爲.net framework(或frameworkx64)2.0執行了aspnet_regiis。另外,如果它是一個網站,請確保它在經典的.net應用程序池中運行,而不是默認的應用程序池。

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

0

短版

檢查項目的大會名稱在web.config

龍版

這是一個老問題在nhibernate-logger鍵的值相匹配,但我碰到當我有同樣的錯誤。在我的情況下,問題是由於我將NLogFactory所在的項目重命名並更改了web.config以反映該項目,但忘記更改項目的組件名稱。

也就是說,我改名爲我的項目從CDP.CoreARR.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" /> 

卻忘了進入項目屬性, 「應用程序」標籤,並將「Assembly name」更改爲新名稱。

相關問題