Ошибка с виндзором: «CallContextLifetimeScope не помечен как сериализуемый».Сессия NHibernate - PullRequest
0 голосов
/ 27 февраля 2012

Я пытаюсь использовать ограниченный образ жизни для своей сессии NHibernate (я бегло использую) в роли Windows Azure.

При инициализации фабрики сеансов я получаю следующее исключение:

Тип 'Castle.MicroKernel.Lifestyle.Scoped.CallContextLifetimeScope' в сборке 'Castle.Windsor, версия = 3.0.0.0, Culture = нейтральный, PublicKeyToken = 407dd0808d44fbdc' не помечен как сериализуемый.

Регистрация на сеанс:

container.Register(Component.For<ISession>()
                .UsingFactoryMethod(k => k.Resolve<ISessionFactory>().OpenSession())
                .LifestyleScoped()
             );

Реализация:

using (this.windsorContainer.BeginScope())
                {


                    var job = this.windsorContainer.Resolve<TJob>();
                    try
                    {
                        job.Run();
                    }
                    finally
                    {
                        this.windsorContainer.Release(job);
                    }

                }

Причина использования области действия - избегать открытых сессий, пока поток не работает. Конечно, я мог бы выделить новый поток и обработать сеанс для каждого потока, но это скорее хак, чем решение)

...