获取当前所有Autofac托管实例的信息

时间:2017-03-18 02:31:17

标签: .net asp.net-core .net-core autofac

我需要一个诊断/管理页面来显示Autofac在当前时间点管理的内容。适合发现泄漏和漏洞。

There is a way计算Autofac已解析的对象数。但它很重,不应该用于生产。

There is a way记录所有决议。同样,它不应该用于生产。

与这些解决方案不同,我需要的只是当前托管对象的快照。这是可能的,没有捕获每个解决方案事件并存储它(如上所述)?

1 个答案:

答案 0 :(得分:1)

Autofac 创建服务实例,但IDisposable服务除外,它不会跟踪任何服务。如果要拥有所有已解析的服务,则必须监视并记录它们。

IDisposable个实例持久存储在IDisposer接口的私有实现的私有字段中。每个ILifetimeScope都包含自己的IDisposer个实例,如果不跟踪生命周期的创建,就无法获取所有活动的ILifetimescope

跟踪实例创建并不像看起来那么重。您提供的链接是实现此类功能的良好起点。不要忘记使用WeakReferenceConditionalWeakTable来避免任何内存泄漏。