Vinny,
Tôi chưa bao giờ sử dụng Ninject, vì vậy tôi có thể dừng lại với đề xuất này. Nhưng có vẻ như việc có một phiên bản MongoSession tĩnh có thể đang giữ các kết nối đang mở. Bạn đã thử TransientBehavior thay vì SingletonBehavior chưa? Hoặc có thể thay đổi mã của bạn để gọi Vứt bỏ (hoặc sử dụng bằng cách sử dụng) sau khi bạn chuyển đổi Liên kết tắt thành Danh sách? Tất cả
var shortcutLionks = _session.All<ShortcutLinks>().ToList();
_session.Dispose();
Một cách tiếp cận tốt hơn có thể là sử dụng một số loại kho lưu trữ hoặc DAO nơi chi tiết phiên được ẩn khỏi bộ điều khiển. Tôi có mẫu RepositoryBase tại http:/ /www.codevoyeur.com/Articles/20/A-NoRM-MongoDB-Repository-Base-Class.aspx .
Stuart Harris có cách triển khai tương tự, được cho là hoàn thiện hơn tại http://red-badger.com/Blog/post/A-simple-IRepository3cT3e-implementation-for-MongoDB-and-NoRM.aspx
Các kết nối MongoDB gộp lại tương đối rẻ để tạo, vì vậy có lẽ tốt nhất bạn nên đảm bảo rằng các phương thức truy cập dữ liệu được loại bỏ sau khi bạn hoàn tất việc lấy / lưu dữ liệu.