NullReferenceException при инициализации NServiceBus в веб-приложении методом Application_Start

Я использую 2.0 RTM NServiceBus и получаю исключение NullReferenceException, когда мой MessageModule связывает CurrentSessionContext с моей фабрикой сеансов NHibernate.

Из моего Application_Start я вызываю следующий метод:

public static void WithWeb(IUnityContainer container)
{
    log4net.Config.XmlConfigurator.Configure();

    var childContainer = container.CreateChildContainer();

    childContainer.RegisterInstance<ISessionFactory>(NHibernateSession.SessionFactory);

    var bus = NServiceBus.Configure.WithWeb()
        .UnityBuilder(childContainer)
        .Log4Net()
        .XmlSerializer()
        .MsmqTransport()
        .IsTransactional(true)
        .PurgeOnStartup(false)
        .UnicastBus()
        .ImpersonateSender(false)
        .LoadMessageHandlers()
        .CreateBus();

    var activeBus = bus.Start();

    container.RegisterInstance(typeof(IBus), activeBus);
}

Когда шина запущена, мой модуль сообщений запускается со следующим:

public void HandleBeginMessage()
{
    try
    {
        CurrentSessionContext.Bind(_sessionFactory.OpenSession());
    }
    catch (Exception e)
    {
        _log.Error("Error occurred in HandleBeginMessage of NHibernateMessageModule", e);
        throw;
    }
}

Просматривая мой журнал, мы регистрируем следующую ошибку при вызове метода связывания:

System.NullReferenceException: Object reference not set to an instance of an object.
at NHibernate.Context.WebSessionContext.GetMap()
at NHibernate.Context.MapBasedSessionContext.set_Session(ISession value)
at NHibernate.Context.CurrentSessionContext.Bind(ISession session)

Видимо, есть некоторая проблема в получении доступа к HttpContext. Должен ли этот вызов настроить NServiceBus позже в жизненном цикле, чем Application_Start? Или есть другой обходной путь, который другие использовали, чтобы заставить обработчики работать в веб-приложении Asp.NET?

Спасибо Стив

Ответы на вопрос(1)

Ваш ответ на вопрос