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