Мне было интересно, как подключить Castle Windsor в WebForms.
Я предполагаю, что вторая строка соединяет контроллеры в MVC:
// Initialize Windsor
IWindsorContainer container = new WindsorContainer().Install(FromAssembly.This());
ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(container.Kernel));
Как мне подключить WebForms в ASP.NET?
У меня был проект, который я изменил в идентичную настройку WebForms. Все работает до того момента, когда я хочу, чтобы Castle Windsor внедрил ISession в страницу ASPX. Это просто не так, и я предполагаю, что вторая строка кода, приведенная выше, предназначена для контроллеров MVC.
У меня есть это в моем инсталляторе nHibernate, в одном и том же месте на обоих проектах:
container.Register(Component.For<ISession>()
.LifeStyle.PerWebRequest
.UsingFactoryMethod(kernel => kernel.Resolve<ISessionFactory>().OpenSession()));
Я изначально предполагал, что это сделает это, но это не так.
Я застрял на этом в течение нескольких дней, и с очень небольшим количеством официальной документации по этому я близок к тому, чтобы вырывать мои волосы, что от этого осталось.
Я знаю, что веб-формы ASP.NET специально не предназначены для работы с внедрением зависимости, но Ninject сделал это, хотя и с небольшим взломом, если я могу подтвердить, что Castle Windsor не совместим и / или не будет больше поддержки веб-форм я перейду к чему-то другому.