【问题标题】:What happens if StructureMap Registry has duplicate scan?如果 StructureMap Registry 有重复扫描会怎样?
【发布时间】:2017-10-31 21:57:56
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: asp.net-mvc memory-leaks structuremap structuremap4


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      • 2021-06-06
      • 1970-01-01
      相关资源
      最近更新 更多