与NServiceBus的NHibernate会话问题

与NServiceBus的NHibernate会话问题,nhibernate,nservicebus,nservicebus4,Nhibernate,Nservicebus,Nservicebus4,我们有一个简单的nservicebus(v4)设置,其中web应用程序将各种消息发送到后端端点进行处理。在提高并发级别之前,一切都进展顺利。通常,但并非所有情况下,我们都会遇到以下异常- System.InvalidOperationException: There is already an open DataReader associated with this Command which must be closed first. 我猜这一定是NHibernate(v3.1)会话管理的问

我们有一个简单的nservicebus(v4)设置,其中web应用程序将各种消息发送到后端端点进行处理。在提高并发级别之前,一切都进展顺利。通常,但并非所有情况下,我们都会遇到以下异常-

System.InvalidOperationException: There is already an open DataReader associated with this Command which must be closed first.
我猜这一定是NHibernate(v3.1)会话管理的问题。现在,我们在每个处理程序中创建一个新的会话工厂和具有单例生命周期的会话(因此每个处理程序都应该有自己的会话,对吗?)。基于此异常,我的最佳猜测是会话上的连接正在被另一个处理程序使用


有人能解释一下吗?为什么这是一个不一致的问题?

找到了问题。我在每个处理程序中初始化structuremap ObjectFactory,这样每个新消息都将覆盖另一个消息(在另一个线程上)最初初始化的内容。这意味着所有线程都在使用最新消息创建的会话。IWantCustomInitialization的Init()方法中的引导似乎已经解决了这个问题。

请附加代码以显示如何使用TransactionScope和NHibernate事务的结构。