2011-11-24 20 views
8

मैं डिफ़ॉल्ट nHibernate Log4net लॉगिंग को प्रतिस्थापित करने के लिए Common.Logging असेंबली का उपयोग करने का प्रयास कर रहा हूं।
Common.Logging.dll v2.0
NHibernate.Logging.CommonLogging.dll v1.2.0.4000

और फिर जोड़ा मेरी Web.config के लिए निम्न:'NHibernate.LoggerProvider' के लिए प्रकार प्रारंभकर्ता ने एक अपवाद फेंक दिया

मैं करने के लिए अपने प्रोजेक्ट में एक संदर्भ जोड़ा :

<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 उपयोग कर रहा हूँ मैं एक समाधान :(नहीं मिल रहा।

पी एस। साथ एनHibernate.Logging.CommonLogging ओ)

+1

मेरी इच्छा है कि इस प्रश्न का उत्तर दिया गया था। यह वही सटीक समस्या है जिसमें मेरे पास – Mario

+0

है, इसका उत्तर दिया गया है, बस उसने इसे चिह्नित नहीं किया है। फेंकने वाले खातों में से एक, सिर्फ एक प्रश्न पूछने के लिए बनाया गया। असल में, कॉन्फ़िगरेशन स्ट्रिंग को एक ट्यूटोरियल से कॉपी किया गया है, और इसमें एक टाइपो है। '" ..., हाइबरनेट। लॉजिंग। "'। यह 'NHibernate.Logging' –

उत्तर

8

स्विच Hibernate.Logging.CommonLogging: यह इस साइट यदि स्वरूपण सही नहीं है बहुत माफी पर अपना सबसे पहला पोस्ट है, मैं glady रचनात्मक आलोचना को स्वीकार करेंगे

+0

होना चाहिए, मुझे लगता है कि हमने उसी वेब का पालन किया है, और अपने टाइपो को अपनी कॉन्फ़िगरेशन में कॉपी करना समाप्त कर दिया है। –

+2

यह स्वीकार्य उत्तर होना चाहिए। –

2

NuGet से NHibernate.Logging पैकेज को स्थापित करने का प्रयास करें (या लाइब्रेरी को संदर्भित करना, यदि आप NuGet का उपयोग नहीं करते हैं)। मेरे लिए काम किया

चीयर्स।

2

यदि आप विंडोज सर्वर 2008 पर अपना समाधान चला रहे हैं, और NHibernate 3.0+ का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आपके पास .Net 3.5 स्थापित है और aspnet_regiis को .NET Framework (या frameworkx64) 2.0 के लिए निष्पादित किया गया है। अगर यह एक वेबसाइट है, तो सुनिश्चित करें कि यह क्लासिक .NET ऐप पूल पर चल रहा है, न कि डिफ़ॉल्ट ऐप पूल।

NHibernate 3.0+ की आवश्यकता है .NET 3.0 और ऊपर।

0

लघु संस्करण

जांच करें कि अपने प्रोजेक्ट की विधानसभा का नाम अपने web.config

लांग संस्करण

यह एक पुरानी सवाल यह है कि में nhibernate-logger कुंजी में मान से मेल खाता है, लेकिन मैं भर में आया था जब मुझे एक ही त्रुटि थी। मेरे मामले में समस्या इसलिए हुई क्योंकि मैंने उस परियोजना का नाम बदल दिया जहां NLogFactory स्थित था और web.config को प्रतिबिंबित करने के लिए बदल दिया, लेकिन परियोजना के असेंबली नाम को बदलना भूल गया।

है कि, मैं ARR.Code को CDP.Core से अपने प्रोजेक्ट का नाम बदला,

<add key="nhibernate-logger" value="CDP.Core.DBContext.Framework.NLogFactory, CDP.Core" /> 
करने के लिए

बदलने के लिए मेरी web.config में चला गया:

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

लेकिन इस परियोजना के गुण, "ऐप्लिकेशन" में जाने के लिए भूल गया टैब, और नए नाम पर "असेंबली नाम" बदलें।