Я использую NHibernate в своем веб-приложении. В какой-то момент он входит в цикл (может выполняться несколько потоков), где он делает много обращений к базе данных. Некоторое время он работает нормально, а затем завершится с ошибкой (когда я вызываю UnitOfWork.Start ()):
Не найдено ни одного компонента для поддержки службы Rhino.Commons.IUnitOfWorkFactory
Как только я получаю эту ошибку в потоке, все последующие вызовы UnitOfWork.Start () (в этом потоке) завершаются ошибкой по той же причине. Как только поток исчезает, проблема, кажется, исчезает так же загадочно, как и появилась.
При просмотре кода Rhino.Commons кажется, что метод Resolve не работает. Компонент зарегистрирован в файле моего приложения Global.asax.cs, поэтому я не понимаю, почему периодически происходит сбой Resolve. Как будто мое приложение теряет регистрацию компонента на короткий промежуток времени. Что вызывает это и что я могу сделать, чтобы решить это?
Частичная трассировка стека:
at Castle.MicroKernel.DefaultKernel.get_Item(Type service)
at Castle.Windsor.WindsorContainer.Resolve(Type service)
at Castle.Windsor.WindsorContainer.Resolve[T]()
at Rhino.Commons.IoC.Resolve[T]()
at Rhino.Commons.UnitOfWork.Start(IDbConnection connection, UnitOfWorkNestingOptions nestingOptions)
Global.asax.cs моего приложения:
public class Global: UnitOfWorkApplication
{
protected override IWindsorContainer CreateContainer(string aWindsorConfig)
{
IWindsorContainer container = new WindsorContainer();
container.Register(Component.For<IUnitOfWorkFactory>().ImplementedBy<NHibernateUnitOfWorkFactory>());
return container;
}
}