Autofac singleton处理

时间:2016-02-15 13:53:39

标签: c# dependency-injection owin autofac

我只想确保 Autofac 中的单身人士处理。如果我在 Autofac 中将组件注册为单例,那么在关闭应用程序时会触发Dispose方法吗?

目前,我在Startup中保留了该组件,并将其命名为OnShutDown,我在OnAppDisposing注册了该组件。认为用 Autofac

设置这个东西会更优雅

1 个答案:

答案 0 :(得分:5)

documentation说:

  

如果您有单件组件(注册为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方法