我只想确保 Autofac 中的单身人士处理。如果我在 Autofac 中将组件注册为单例,那么在关闭应用程序时会触发Dispose
方法吗?
目前,我在Startup
中保留了该组件,并将其命名为OnShutDown
,我在OnAppDisposing
注册了该组件。认为用 Autofac
答案 0 :(得分:5)
如果您有单件组件(注册为SingleInstance()),它们将在容器的整个生命周期中存在。由于容器的使用寿命通常是应用程序的使用寿命,因此意味着在应用程序结束之前不会丢弃该组件。
> http://docs.autofac.org/en/latest/lifetime/disposal.html
如果希望 Autofac 在Dispose
注册时调用SingleInstance
方法,则必须在应用程序关闭时调用容器的Dispose
方法。
这个github问题讨论了它:Should UseAutofacMiddleware dispose container on OWIN shutdown。
在 Autofac Owin Integration 的测试版中,您有一个DisposeContainerOnShutdown
扩展方法。
从Autofac.Owin
的4.0版本开始,您可以执行此操作:
app.DisposeContainerOnShutdown(container);
使用旧版本,您可以复制/粘贴AutofacAppBuilderExtensions.cs源代码中的DisposeContainerOnShutdown
方法