J'utilise C# pour créer une procédure SQL CLR pour effectuer certaines opérations de base sur MongoDB comme obtenir le contenu d'une collection, insérer un document, etc. mais je reçois L'initialiseur de type pour 'MongoDB.Bson.Serialization.BsonSerializer' a généré une exception.SQL CLR pour lancer mongodb 'MongoDB.Bson.Serialization.BsonSerializer' exception
Des idées?
Le code exact de C# fonctionne directement. J'utilise le pilote C# pour Mongo version 1.10, .NET Framework 3.5, Microsoft SQL Server 2008 (RTM).
Ci-dessous vous pouvez trouver un échantillon de la trace de la pile:
Impossible de supprimer la collection de DB Erreur: Le type initialiseur pour 'MongoDB.Bson.Serialization.BsonSerializer' a jeté une exception. à MongoDB.Bson.Serialization.BsonSerializer.LookupSerializer (type Type) à MongoDB.Driver.MongoDatabase.RunCommandAs [TCommandResult] (commande IMongoCommand) à MongoDB.Driver.MongoDatabase.DropCollection (String collectionName) à Mongo.Test()
Obtenir Collections de DB Impossible d'obtenir la collecte de données erreur: Le type initialiseur pour « MongoDB.Bson.Serialization.BsonSerializer » a lancé une exception. à MongoDB.Bson.Serialization.BsonSerializer.LookupSerializer (type Type) à MongoDB.Driver.MongoCollection.RunCommandAs [TCommandResult] (commande IMongoCommand, ReadPreference readPreference) à MongoDB.Driver.MongoCollection.Count (CountArgs args) à mongo. test()
Insertion document collection ... Impossible d'insérer dans la collection de DB test_blobs erreur: Impossible de se connecter au serveur xx.local: 27017: le type initialiseur pour « MongoDB.Bson.Serialization.BsonSerializer 'a jeté une exception .. à MongoDB.Driver.Internal.DirectMongoServerProxy.Connect (TimeSpan timeout, ReadPreference readPreference) à MongoDB.Driver.Internal.DirectMongoServerProxy.ChooseServerInstance (ReadPreference readPreference) à MongoDB.Driver.MongoServer.AcquireConnection (ReadPreference readPreference) à MongoDB.Driver.MongoCollection.InsertBatch (Type nominalType, documents IEnumerable, options MongoInsertOptions) à MongoDB.Driver.MongoCollection.Insert (Type nominalType, document de l'objet, MongoInsertOptions options) à MongoDB.Driver.MongoCollection.Insert [TNominalType] (document TNominalType) à Mongo.Test()
L'assemblage contenant le 'espace de noms MongoDB' enregistré comme' EXTERNAL_ACCESS' ou 'UNSAFE'? Je crois qu'il se plaint de quelque chose dans le constructeur de classe pour 'MongoDB.Bson.Serialization.BsonSerializer' qui devrait être la méthode commençant par' static BsonSerializer() '. Que se passe-t-il dans cette méthode? –
@srutzky, Oui, l'assemblage est UNSAFE. Je ne sais pas ce qui se passe à l'intérieur de cette méthode, car celle-ci provient du pilote C# dll de MongoDB. J'ai découvert qu'avec une version plus récente de sql qui soutient le cadre .NET plus nouveau et avec le dernier pilote v2.0 de MongoDB, le dessus fonctionne très bien. Cependant, j'ai besoin de cela pour travailler avec SQL 2008 –
Eh bien, le pilote .NET est open source, donc vous pouvez savoir ce qu'il fait en allant ici: https://github.com/mongodb/mongo-csharp-driver/tree/maître ;-). Je suggère de saisir cette source et d'essayer de la compiler après avoir changé le 'TargetFrameworkVersion' en .NET 3.5. Si le code utilise quelque chose de nouveau dans v4.0 ou plus récent, alors vous devriez obtenir une erreur de compilation et donc votre réponse ;-) –