Вини,
Никога не съм използвал Ninject, така че може да съм далеч от това предложение. Но изглежда възможно наличието на статичен екземпляр на MongoSession да държи връзките отворени. Опитвали ли сте TransientBehavior вместо SingletonBehavior? Или може би да промените кода си, за да извикате Dispose (или да използвате using), след като преобразувате вашите ShortcutLinks в списък? Всички
var shortcutLionks = _session.All<ShortcutLinks>().ToList();
_session.Dispose();
По-добър подход може да бъде използването на някакъв вид хранилище или DAO, където подробностите за сесията са скрити от контролера. Имам пример за RepositoryBase на http:/ /www.codevoyeur.com/Articles/20/A-NoRM-MongoDB-Repository-Base-Class.aspx .
Stuart Harris има подобна, може би по-пълна реализация в http://red-badger.com/Blog/post/A-simple-IRepository3cT3e-implementation-for-MongoDB-and-NoRM.aspx
Обединените връзки към MongoDB са сравнително евтини за създаване, така че вероятно е най-добре да се уверите, че методите за достъп до данни се изхвърлят, след като приключите с получаването/запазването на данни.