扫描时NServiceBus抛出堆栈溢出

扫描时NServiceBus抛出堆栈溢出,nservicebus,Nservicebus,将消息类型对象移动到其他程序集中时遇到此问题。由于某种原因,当消息和处理程序存在于同一个项目中时,我没有遇到任何问题 NServiceBus在扫描程序集时抛出StackoverflowException。这是我当前配置NServiceBus的方式: var bus = NServiceBus.Configure .With(AllAssemblies.Matching("Presentation")) .DefineEndpointName("Pr

将消息类型对象移动到其他程序集中时遇到此问题。由于某种原因,当消息和处理程序存在于同一个项目中时,我没有遇到任何问题

NServiceBus在扫描程序集时抛出StackoverflowException。这是我当前配置NServiceBus的方式:

var bus = NServiceBus.Configure
            .With(AllAssemblies.Matching("Presentation"))
            .DefineEndpointName("Presentation")
            .StructureMapBuilder()
            .Log4Net()
            .DefiningEventsAs(t => t.Namespace != null && t.Namespace.StartsWith("Demo") && t.Namespace.EndsWith("Events"))
            .DefiningCommandsAs(t => t.Namespace != null && t.Namespace.StartsWith("Demo") && t.Namespace.EndsWith("Commands"))
            .DefiningMessagesAs(t => t.Namespace != null && t.Namespace.StartsWith("Demo") && (t.Namespace.EndsWith("Messages") || t.Namespace.EndsWith("Queries")))
            .UnicastBus()
            .InMemorySubscriptionStorage()
            .UseInMemoryTimeoutPersister()
            .InMemoryFaultManagement()
            .InMemorySagaPersister()
            .CreateBus()
            .Start();
它在NServiceBus.Configure.GetAllowedTypes中溢出,从我所知道的情况来看,它会扫描我的3个演示项目(演示、演示、库存和演示、库存、消息),然后再次运行该方法以扫描导致溢出的NServiceBus.Core

我目前的项目结构如下:

使用NServiceBus 4.6.3


我还发现,如果我允许structuremap的程序集扫描程序扫描NServiceBus.Core,它会引发堆栈溢出-这可能是一个bug?

我将问题追溯到Fody.Costura,特别是这个问题

他们认为程序集重定向会在不同版本的程序集中导致无限循环,而不是由Costura管理。NServiceBus使用Fody的次数很多,所以我尝试删除web.config中的所有程序集重定向,结果启动得很好

因此,如果您遇到此问题,您可能引用了某个程序集的两个不同版本,您应该在删除所有重定向之前修复此问题

对我来说,问题是Raven.Client.Lightweight和Raven.abstraction


我认为NServiceBus可能将这些程序集编织到它的DLL中,我也在使用nuget

PSA中的程序集-保持重定向干净!对我来说,它发生在我的NServicebus测试项目中。我在App.config中删除了整个节点,然后开始工作。谢谢对我来说,这只发生在释放模式下。