我正在尝试在 NancyFX 中使用 TinyIOC 的依赖注入。
我打算做的是,每个请求都有一个 SqlConnection ,应该自动关闭。到目前为止,我所做的是创建一个 CustomBootstrapper,它覆盖 ConfigureRequestContainer 方法并将我的 IDbConnectionService 注册到 AsPerRequestSingleton() 方法。
这应该确保 SqlConnectionService 每个请求都存在,并且应该在请求之后被销毁。至少,这是我在阅读文档后认为应该做的。
自定义引导程序:
https://github.com/mschlechter/NancyFxTutorial/blob/master/NancyFxTutorial.Web/CustomBootstrapper.cs
和 SqlConnectionService:
该服务实现了 IDisposable 接口,并且应该释放底层的 SqlConnection(IDbConnectionService 继承自 IDisposable)。
不幸的是,这个 Dispose() 方法永远不会被调用。因此,就目前情况而言,它将保持与数据库的连接处于打开状态。这是一件(真的)坏事:-)
我的问题是如何使用依赖注入来解决这个问题。
我正在尝试模拟我从 Java 上的 Spring MVC 中知道的模式。每个服务都可以调用 getCurrentSession() 来获取 Hibernate 会话。一个请求范围的 SessionFactory 被注入,每个服务都可以执行 sessionFactory.getCurrentSession() 来获取当前会话。
我很想用 NancyFX 和 TinyIOC 做同样的事情。
回到我最初的问题:为什么不对使用 AsPerRequestSingleton() 创建的对象调用 Dispose 方法,我该怎么做才能获得预期的结果?(在请求/响应范围内存在的对象,完成后将自动释放)
在此先感谢并致以最诚挚的问候, Marc Schlechter