AsPerRequestSingleton()创建的对象不会自动处理

时间:2016-12-05 20:33:18

标签: c# nancy tinyioc

我正在尝试在NancyFX中使用TinyIOC的依赖注入。

我打算做的是,每个请求都有一个SqlConnection应该自动关闭。到目前为止我所做的是创建一个CustomBootstrapper,它覆盖ConfigureRequestContainer方法并使用AsPerRequestSingleton()方法注册我的IDbConnectionService。

这应该确保每个请求都存在SqlConnectionService,并且应该在请求之后销毁它。至少,这是我认为在阅读文档后应该做的事情。

自定义引导程序:

https://github.com/mschlechter/NancyFxTutorial/blob/master/NancyFxTutorial.Web/CustomBootstrapper.cs

和SqlConnectionService:

https://github.com/mschlechter/NancyFxTutorial/blob/master/NancyFxTutorial.Web/Services/SqlConnectionService.cs

此服务实现IDisposable接口,并应配置底层SqlConnection(IDbConnectionService继承自IDisposable)。

不幸的是,从不调用此Dispose()方法。因此,就目前而言,它将保持与数据库的连接打开。这是一个(真的)坏事: - )

我的问题是如何使用依赖注入修复此问题。

我正在尝试模拟我在Spring上使用Spring MVC知道的模式。每个服务都可以调用getCurrentSession()来获取Hibernate会话。注入了一个请求范围的SessionFactory,每个服务都可以执行sessionFactory.getCurrentSession()来获取当前会话。

我很想用NancyFX和TinyIOC做同样的事情。

回到我原来的问题:为什么没有在使用AsPerRequestSingleton()创建的对象上调用Dispose方法,我该怎么做才能获得预期的结果? (在请求/响应范围期间存在的对象,完成后将自动处理)

提前致谢并致以最诚挚的问候, Marc Schlechter

0 个答案:

没有答案