0

我试图在我的 MVC Web 应用程序中挖掘内存泄漏,我注意到我的 DefaultRegistry for StructureMap 有一个重复的扫描...scan.TheCallingAssembly():

    public DefaultRegistry()
    {
        Scan(
            scan =>
            {                    
                scan.TheCallingAssembly();
                scan.WithDefaultConventions();                    
                scan.TheCallingAssembly();
           });
    }

这会导致问题吗?它会导致内存泄漏吗?(请成为问题)。我今晚将发布更正,所以我最终会知道这是否解决了问题;但是很高兴知道重复扫描方法是否有任何副作用。

另外,扫描方法出现的顺序有什么意义吗?scan.WithDefaultConventions() 是否需要排在最后,或排在最前面,还是有关系?

4

1 回答 1

0

这是 StructureMap 中的相关代码:https ://github.com/structuremap/structuremap/blob/master/src/StructureMap/Graph/AssemblyScanner.cs#L29-L30 。

所以不,StructureMap 不会在任何一次调用中对同一个程序集进行双重扫描Scan()。如果您在多个操作中执行相同的逻辑操作,您可能Scan()会创建重复,但至少在上述情况下,那些特定的常规注册不会两次添加相同的类型。

不,您声明程序集和注册约定的顺序无关紧要。注册约定将按照您定义它们的顺序执行,因此您会看到在少数情况下反映在依赖顺序中。

于 2017-11-01T15:17:48.213 回答