C# AsPerRequestSingleton()创建的对象不会自动释放

C# AsPerRequestSingleton()创建的对象不会自动释放,c#,nancy,tinyioc,C#,Nancy,Tinyioc,我试图在NancyFX中使用TinyIOC的依赖项注入 我打算做的是,每个请求有一个SqlConnection,它应该自动关闭。到目前为止,我所做的是创建一个CustomBootstrapper,它覆盖ConfigureRequestContainer方法,并使用AsPerRequestSingleton()方法注册IDbConnectionService 这应该确保每个请求都存在SqlConnectionService,并且应该在请求后销毁。至少,在阅读文档之后,我认为它应该这样做 自定义引导

我试图在NancyFX中使用TinyIOC的依赖项注入

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

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

自定义引导程序:

以及SqlConnectionService:

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

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

我的问题是如何使用依赖注入来解决这个问题

我试图在Java上模拟我从SpringMVC知道的一种模式。每个服务都可以调用getCurrentSession()来获取Hibernate会话。注入请求范围的SessionFactory,每个服务都可以执行SessionFactory.getCurrentSession()来获取当前会话

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

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

提前感谢并致以最良好的问候,
Marc Schlechter

我用Autofac替换了TinyIOC,并使用了它的InstancePerRequest。现在一切正常。虽然您已经找到了一个解决方案,但对这个()答案的评论表明这可能是TinyIoC的一个已知问题。