Vinnie,
Nigdy nie korzystałem z Ninject, więc mógłbym się pomylić z tą sugestią. Ale wydaje się możliwe, że posiadanie statycznej instancji MongoSession może utrzymywać otwarte połączenia. Czy próbowałeś TransientBehavior zamiast SingletonBehavior? A może zmienić kod, aby wywołać Dispose (lub użyć using) po przekonwertowaniu skrótów na listę? Wszystkie
var shortcutLionks = _session.All<ShortcutLinks>().ToList();
_session.Dispose();
Lepszym podejściem może być użycie pewnego rodzaju repozytorium lub DAO, w którym szczegóły sesji są ukryte przed kontrolerem. Mam próbkę RepositoryBase pod adresem http:// /www.codevoyeur.com/Articles/20/A-NoRM-MongoDB-Repository-Base-Class.aspx .
Stuart Harris ma podobną, prawdopodobnie bardziej kompletną implementację pod adresem http://red-badger.com/Blog/post/A-simple-IRepository3cT3e-implementation-for-MongoDB-and-NoRM.aspx
Połączenia w puli MongoDB są stosunkowo tanie w tworzeniu, więc prawdopodobnie najlepiej jest upewnić się, że metody dostępu do danych zostaną usunięte po zakończeniu pobierania/zapisywania danych.