0

從NLog.LogManager.GetCurrentClassLogger()
拋出NullReferenceException Mongo C#驅動程序(版本1.4.2)僅在發佈版本中發生錯誤。與調試版本一起工作良好。
不知道,如果是涉及到NLog vs. StructuremapMongo C#驅動NullReferenceException與NLog.LogManager.GetCurrentClassLogger()

堆棧跟蹤,

System.NullReferenceException
在NLog.LogManager.GetCurrentClassLogger()
在lambda_method(關閉)
在MongoDB.Bson.Serialization。 BsonClassMap.CreateInstance()in C:\ work \ 10gen \ mongodb \ mongo-csharp-driver \ Bson \ Serialization \ BsonClassMap.cs:line 429
at MongoDB.Bson.Serialization.BsonClassMapSerializer.Deserialize(BsonReader bsonReader,Type nominalType,輸入actualType,IBsonSeri在C:\ work \ 10gen \ mongodb \ mongo-csharp-driver \ Bson \ Serialization \ BsonClassMapSerializer.cs中:line 111
at MongoDB.Bson.Serialization.BsonClassMapSerializer.Deserialize(BsonReader bsonReader,Type nominalType,IBsonSerializationOptions options )in C:\ work \ 10gen \ mongodb \ mongo-csharp-driver \ Bson \ Serialization \ BsonClassMapSerializer.cs:line 78
at MongoDB.Bson.Serialization.BsonSerializer.Deserialize(BsonReader bsonReader,Type nominalType,IBsonSerializationOptions options)in C:\ work \ 10gen \ mongodb \ mongo-csharp-driver \ Bson \ Serialization \ BsonSerializer.cs:第223行
at MongoDB.Driver.Internal.MongoReplyMessage 1.ReadFrom(BsonBuffer buffer, IBsonSerializationOptions serializationOptions) in C:\work\10gen\mongodb\mongo-csharp-driver\Driver\Internal\MongoReplyMessage.cs:line 105
at MongoDB.Driver.Internal.MongoConnection.ReceiveMessage[TDocument](BsonBinaryReaderSettings readerSettings, IBsonSerializationOptions serializationOptions) in C:\work\10gen\mongodb\mongo-csharp-driver\Driver\Internal\MongoConnection.cs:line 442
at MongoDB.Driver.MongoCursorEnumerator
1.GetReply(MongoConnection連接,MongoRequestMessage消息)在C:\工作\ 10gen的\ MongoDB的\蒙戈 - CSHARP驅動程序\ driver \核心\ MongoCursorEnumerator.cs:李NE 296
在MongoDB.Driver.MongoCursorEnumerator 1.GetFirst() in C:\work\10gen\mongodb\mongo-csharp-driver\Driver\Core\MongoCursorEnumerator.cs:line 251
at MongoDB.Driver.MongoCursorEnumerator
1.MoveNext()在C:\工作\ 10gen的\ mongodb的\蒙戈-CSHARP驅動\驅動\核心\ MongoCursorEnumerator.cs:線141
在System.Linq.Enumerable .FirstOrDefault [TSource](IEnumerable`1來源)

回答

1

該異常實際上並沒有被C#驅動程序拋出,而是被驅動程序外的某些代碼拋出。查看堆棧跟蹤,我們可以看到C#驅動程序已經從數據庫中讀取了一個文檔,並試圖對其進行反序列化(請參閱堆棧跟蹤上的BsonSerializer.Deserialize)。作爲反序列化的一部分,它需要創建類的實例(請參閱堆棧跟蹤中的BsonClassMapSerializer.CreateInstance)。對象的構造函數(或可能是對象類的靜態構造函數)拋出NullReferenceException異常。

你可能知道你使用的是什麼類在這裏,可以去看看你的源代碼,以找出原因NLog.LogManager(這是C#驅動程序的部分)拋出一個NullReferenceException。

+0

謝謝羅伯特!問題是由NLog調用NLog.LogManager.GetCurrentClassLogger()引起的。所以將其更改爲NLog.LogManager.GetLogger(「ClassName」),它工作正常。這是NLog在某些情況下實現NLog.LogManager.GetCurrentClassLogger()的問題。 – vetti 2012-07-25 15:52:11