2011-11-24 28 views
8

Tôi đang cố gắng sử dụng hội đồng Common.Logging để thay thế bản ghi nhật ký đăng nhập nHibernate mặc định.Trình khởi tạo kiểu cho 'NHibernate.LoggerProvider' đã ném một ngoại lệ

Tôi đã thêm một tài liệu tham khảo trong dự án của tôi để:
Common.Logging.dll v2.0
NHibernate.Logging.CommonLogging.dll v1.2.0.4000

và sau đó thêm dòng sau vào Web.config của tôi :

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

Mục tiêu ulitmate của tôi là thay thế ghi nhật ký Log4net bằng Thư viện doanh nghiệp 5.0, nhưng tôi chỉ thực hiện một bước tại thời điểm này.

Khi tôi chạy ứng dụng của tôi bây giờ tôi nhận được ngoại lệ sau đây:

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

Có điều gì mà tôi đang mất tích để sử dụng Common.Logging với nHibernate? Tôi đã thử làm theo các hướng dẫn Tôi đã tìm thấy trên web, nhưng nó không làm việc và tôi không thể tìm thấy một giải pháp :(

Tôi đang sử dụng NHibernate v3.2.0.4000.

PS. Đây là bài viết đầu tiên của tôi trên trang web này để xin lỗi nếu định dạng là không đúng, tôi sẽ glady chấp nhận những lời chỉ trích mang tính xây dựng: o)

+1

Tôi muốn câu hỏi này được trả lời. Đây là vấn đề chính xác giống như tôi đang có – Mario

+0

Nó được trả lời, chỉ là ông đã không đánh dấu nó. Một trong những tài khoản throwaway, chỉ cần thực hiện để đặt một câu hỏi. Về cơ bản, chuỗi cấu hình được sao chép từ một hướng dẫn và nó có lỗi đánh máy. '" ..., Hibernate.Logging. "'. Nó phải là 'NHibernate.Logging' –

Trả lời

8

switch Hibernate.Logging.CommonLogging với NHibernate.Logging.CommonLogging

+0

Tôi nghĩ chúng tôi đã làm theo cùng một hướng dẫn trên web và kết thúc việc sao chép lỗi đánh máy của anh ấy vào cấu hình của chính chúng ta. –

+2

Đây phải là câu trả lời được chấp nhận. –

2

thử cài đặt gói NHibernate.Logging từ NuGet (hoặc tham khảo thư viện, nếu bạn không sử dụng NuGet). Đã làm cho tôi.

Chúc mừng.

2

Nếu bạn đang chạy giải pháp của mình trên máy chủ Windows 2008 và sử dụng NHibernate 3.0+, hãy đảm bảo bạn đã cài đặt .Net 3.5 và aspnet_regiis đã được thực hiện cho .net framework (hoặc frameworkx64) 2.0. Ngoài ra nếu nó là một trang web, hãy chắc chắn rằng nó đang chạy trên hồ bơi ứng dụng .net cổ điển và không phải là hồ bơi ứng dụng mặc định.

nhu cầu NHibernate 3.0+ .net 3.0 trở lên.

0

Short Version

Kiểm tra xem Tên hội dự án của bạn phù hợp với giá trị trong khóa nhibernate-logger trong bạn web.config

dài Version

Đây là một câu hỏi cũ, nhưng tôi đi qua khi tôi gặp lỗi tương tự. Trong trường hợp của tôi, vấn đề là do tôi đổi tên dự án nơi NLogFactory được đặt và thay đổi web.config để phản ánh điều đó, nhưng quên thay đổi tên lắp ráp của dự án.

Đó là, tôi đổi tên dự án của tôi CDP.Core-ARR.Code, đi vào web.config của tôi để thay đổi

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

Để:

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

Nhưng quên đi vào các tính chất của dự án, "Ứng dụng" và thay đổi "Tên lắp ráp" thành tên mới.

Các vấn đề liên quan