Vinny,
Eu nunca usei o Ninject, então eu poderia estar longe com essa sugestão. Mas parece possível que ter uma instância estática do MongoSession possa estar mantendo as conexões abertas. Você já tentou TransientBehavior em vez de SingletonBehavior? Ou talvez altere seu código para chamar Dispose (ou use using) depois de converter seus ShortcutLinks em uma lista? Tudo
var shortcutLionks = _session.All<ShortcutLinks>().ToList();
_session.Dispose();
Uma abordagem melhor pode ser usar algum tipo de repositório ou DAO onde os detalhes da sessão estão ocultos do controlador. Eu tenho uma amostra do RepositoryBase em http:/ /www.codevoyeur.com/Articles/20/A-NoRM-MongoDB-Repository-Base-Class.aspx .
Stuart Harris tem uma implementação semelhante e possivelmente mais completa em http://red-badger.com/Blog/post/A-simple-IRepository3cT3e-implementation-for-MongoDB-and-NoRM.aspx
As conexões do MongoDB em pool são relativamente baratas de criar, portanto, provavelmente é melhor garantir que os métodos de acesso aos dados sejam descartados após a obtenção/salvamento dos dados.