0

Mongo C# 驱动程序(版本 1.4.2)从 NLog.LogManager.GetCurrentClassLogger() 抛出 NullReferenceException
错误仅在发布版本中发生。与调试版本一起工作正常。
不确定它是否与NLog vs. Structuremap有关

堆栈跟踪,

System.NullReferenceException
at NLog.LogManager.GetCurrentClassLogger()
at lambda_method(Closure)
at MongoDB.Bson.Serialization.BsonClassMap.CreateInstance() in C:\work\10gen\mongodb\mongo-csharp-driver\Bson\Serialization\BsonClassMap。 cs:
C:\work\10gen\mongodb\mongo-csharp-driver\Bson\Serialization\BsonClassMapSerializer.cs 中 MongoDB.Bson.Serialization.BsonClassMapSerializer.Deserialize(BsonReader bsonReader, TypenominalType, Type actualType, IBsonSerializationOptions options) 的第 429 行:
C:\work\10gen\mongodb\mongo-csharp-driver\Bson\Serialization\BsonClassMapSerializer.cs 中 MongoDB.Bson.Serialization.BsonClassMapSerializer.Deserialize(BsonReader bsonReader, TypenominalType, IBsonSerializationOptions options) 的第 111 行:第 78 行
在 C:\work\10gen\mongodb\mongo-csharp-driver\Bson\Serialization\BsonSerializer.cs: MongoDB.Driver 中的 MongoDB.Bson.Serialization.BsonSerializer.Deserialize(BsonReader bsonReader, TypenominalType, IBsonSerializationOptions options
) .Internal.MongoReplyMessage 1.GetReply(MongoConnection connection, MongoRequestMessage message) in C:\work\10gen\mongodb\mongo-csharp-driver\Driver\Core\MongoCursorEnumerator.cs: MongoDB.Driver.MongoCursorEnumerator 的第 296 行1.MoveNext( ) 在 C:\work\10gen\mongodb\mongo-csharp-driver\Driver\Core\MongoCursorEnumerator.cs: System.Linq.Enumerable.FirstOrDefault[TSource] 的第 141 行(IEnumerable`1 源) 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.GetFirst() in C:\work\10gen\mongodb\mongo-csharp-driver\Driver\Core\MongoCursorEnumerator.cs:line 251
at MongoDB.Driver.MongoCursorEnumerator

4

1 回答 1

1

该异常实际上不是由 C# 驱动程序引发的,而是由驱动程序外部的某些代码引发的。

查看堆栈跟踪,我们可以看到 C# 驱动程序已经从数据库中读取了一个文档并试图反序列化它(请参阅堆栈跟踪上的 BsonSerializer.Deserialize)。作为反序列化的一部分,它需要创建您的类的实例(请参阅堆栈跟踪上的 BsonClassMapSerializer.CreateInstance)。对象的构造函数(或者可能是对象类的静态构造函数)正在抛出 NullReferenceException。

您可能知道您在这里使用的是什么类,并且可以查看您的源代码以找出为什么 NLog.LogManager(它不是C# 驱动程序的一部分)抛出 NullReferenceException。

于 2012-07-25T00:02:02.643 回答