MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Norm.MongoException:timeout della connessione durante il tentativo di ottenere la connessione dal pool di connessioni

Vinny,

Non ho mai usato Ninject, quindi potrei essere lontano con questo suggerimento. Ma sembra possibile che avere un'istanza statica di MongoSession possa tenere aperte le connessioni. Hai provato TransientBehavior invece di SingletonBehavior? O forse modificare il codice per chiamare Dispose (o utilizzare using) dopo aver convertito i collegamenti in un elenco? Tutti

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

Un approccio migliore potrebbe essere quello di utilizzare una sorta di repository o DAO in cui i dettagli della sessione sono nascosti dal controller. Ho un esempio di RepositoryBase su http:/ /www.codevoyeur.com/Articles/20/A-NoRM-MongoDB-Repository-Base-Class.aspx .

Stuart Harris ha un'implementazione simile, probabilmente più completa su http://red-badger.com/Blog/post/A-simple-IRepository3cT3e-implementation-for-MongoDB-and-NoRM.aspx

Le connessioni MongoDB in pool sono relativamente economiche da creare, quindi è probabilmente meglio assicurarsi che i metodi di accesso ai dati vengano eliminati dopo aver recuperato/salvato i dati.