MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Norm.MongoException:Verbindungszeitüberschreitung beim Versuch, eine Verbindung vom Verbindungspool zu erhalten

Vinny,

Ich habe Ninject noch nie verwendet, daher könnte ich mit diesem Vorschlag weit daneben liegen. Aber es scheint möglich, dass eine statische MongoSession-Instanz Verbindungen offen hält. Haben Sie TransientBehavior anstelle von SingletonBehavior ausprobiert? Oder ändern Sie vielleicht Ihren Code so, dass er Dispose (oder use using) aufruft, nachdem Sie Ihre ShortcutLinks in eine Liste konvertiert haben? Alle

var shortcutLionks = _session.All<ShortcutLinks>().ToList();
_session.Dispose();

Ein besserer Ansatz könnte darin bestehen, eine Art Repository oder DAO zu verwenden, bei dem die Sitzungsdetails vor dem Controller verborgen sind. Ich habe ein RepositoryBase-Beispiel unter http:/ /www.codevoyeur.com/Articles/20/A-NoRM-MongoDB-Repository-Base-Class.aspx .

Stuart Harris hat eine ähnliche, wohl vollständigere Implementierung unter http://red-badger.com/Blog/post/A-simple-IRepository3cT3e-implementation-for-MongoDB-and-NoRM.aspx

Gepoolte MongoDB-Verbindungen sind relativ kostengünstig zu erstellen, daher ist es wahrscheinlich am besten, sicherzustellen, dass die Datenzugriffsmethoden gelöscht werden, nachdem Sie mit dem Abrufen/Speichern von Daten fertig sind.