Vinny,
Nunca he usado Ninject, por lo que podría estar equivocado con esta sugerencia. Pero parece posible que tener una instancia estática de MongoSession pueda mantener abiertas las conexiones. ¿Has probado TransientBehavior en lugar de SingletonBehavior? ¿O tal vez cambiar su código para llamar a Dispose (o usar usando) después de convertir sus ShortcutLinks en una lista? Todo
var shortcutLionks = _session.All<ShortcutLinks>().ToList();
_session.Dispose();
Un mejor enfoque podría ser usar algún tipo de repositorio o DAO donde los detalles de la sesión estén ocultos para el controlador. Tengo una muestra de RepositoryBase en http:/ /www.codevoyeur.com/Articles/20/A-NoRM-MongoDB-Repository-Base-Class.aspx .
Stuart Harris tiene una implementación similar, posiblemente más completa, en http://red-badger.com/Blog/post/A-simple-IRepository3cT3e-implementation-for-MongoDB-and-NoRM.aspx
Las conexiones agrupadas de MongoDB son relativamente baratas de crear, por lo que probablemente sea mejor asegurarse de que los métodos de acceso a los datos se eliminen después de que haya terminado de obtener/guardar datos.