Autofac 单例处置
本文关键字:单例处 Autofac | 更新日期: 2023-09-27 18:34:36
我只想确保Autofac中的单例处理。如果我在 Autofac 中将组件注册为单例,则在应用程序关闭时Dispose
触发方法?
目前,我将组件保存在Startup
中,并将其释放在OnShutDown
中,我在OnAppDisposing
中注册。以为用Autofac设置这个东西会更优雅
文档说:
如果您有单例组件(注册为 SingleInstance(((,它们将在容器的生命周期内存在。由于容器生存期通常是应用程序生存期,这意味着在应用程序结束之前不会释放组件。
> http://docs.autofac.org/en/latest/lifetime/disposal.html
如果要在SingleInstance
注册时调用 Autofac Dispose
方法,则必须在应用程序关闭时调用容器的 Dispose
方法。
这个 github 问题讨论了它:应该在 OWIN 关闭时使用 AutofacMiddleware 处理容器吗?
在Autofac Owin Integration的测试版中,您有一个DisposeContainerOnShutdown
扩展方法。
从 4.0 版本的 Autofac.Owin
开始,您可以这样做:
app.DisposeContainerOnShutdown(container);
使用旧版本,您可以从 AutofacAppBuilderExtensions 中复制/粘贴DisposeContainerOnShutdown
方法.cs源代码