2012-01-17 2 views
1

Мы представляем поддержку nservicebus 3 и саги в нашем приложении. Мы настроили NHibernate саги стойкой бактерии следующим образом:nservicebus3: SagaPersister Нет текущей сессии

<NHibernateSagaPersisterConfig> 
    <NHibernateProperties> 
     <add Key="connection.provider" Value="NHibernate.Connection.DriverConnectionProvider"/> 
     <add Key="connection.driver_class" Value="NHibernate.Driver.SqlClientDriver"/> 
     <add Key="dialect" Value="NHibernate.Dialect.MsSql2008Dialect"/> 
     <add Key="connection.connection_string_name" Value="TeamGameServiceDB"/>  
    </NHibernateProperties> 
    </NHibernateSagaPersisterConfig> 

    public void InitializeServiceBus(IWindsorContainer container) 
    { 
     SetLoggingLibrary.Log4Net(log4net.Config.XmlConfigurator.Configure); 

     Configure.With() 
      .DefiningMessagesAs(t => t.ImplementsTheInterface(typeof (IMessage))) 
      .Log4Net() 
      .CastleWindsorBuilder(container) 
      .XmlSerializer() 
      .MsmqTransport() 
      .IsolationLevel(System.Transactions.IsolationLevel.RepeatableRead) 
      .UnicastBus() 
      .Sagas() 
      .NHibernateSagaPersister(); 
    } 

Когда сага собирается быть сохранялся я получаю исключение, говоря «Нет Session не связан с текущим контекстом». Я просматриваю проект nservicebus.nhibernate, и я не могу понять, кто несет ответственность за настройку текущего сеанса, используемого SagaPersistor (резидент saga использует ISessionFactory.GetCurrentSession()). Заводская настройка сеанса, настроенная с помощью nhibernate saga persister, настроена на использование «NHibernate.Context.ThreadStaticSessionContext», что подразумевает, что что-то в стеке nservicebus должно назначить это. Может ли кто-нибудь помочь мне пролить свет на то, как я могу назначить ISessionFactory.GetCurrentSession()? Сага, которая должна сохраняться, начинается с сообщения bus.SendLocal.

ответ

Смежные вопросы