Autofac 单例处置

本文关键字:单例处 Autofac | 更新日期: 2023-09-27 18:34:36

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

目前,我将组件保存在Startup中,并将其释放在OnShutDown中,我在OnAppDisposing中注册。以为用Autofac设置这个东西会更优雅

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源代码