Я относительно новичок в замке Виндзор в частности и IoC в целом. Я регистрации мой компонент, как это:Замок Виндзор: переходный образ жизни требует HttpContext?
public static void Register(IWindsorContainer container)
{
container.Register(Classes.FromAssembly(Assembly.GetAssembly(typeof(GenericBaseRepository)))
.InSameNamespaceAs<GenericBaseRepository>()
.WithService.DefaultInterfaces()
.LifestyleTransient());
}
Я тогда его решения в части кода, который не имеет HttpContext:
var baseRepository = ContainerManager.Container.Resolve<IBaseRepository>();
(IBaseRepository будучи интерфейс, реализованный GenericBaseRepository). Это выдает следующее сообщение:
«HttpContext.Current является нулевым PerWebRequestLifestyle может быть использован только в ASP.Net.»
Что меня смущает, потому что образ жизни я выбираю преходяще, не PerWebRequest. Конечно, HttpContext не существует во время запланированной задачи, но мне это действительно не нужно, мне просто нужен экземпляр моего репозитория, который не будет взаимодействовать с каким-либо веб-запросом.
Итак, почему Castle Windsor настаивает на необходимости HttpContext при разрешении моего компонента?
Да, это действительно так. После попытки получить право .pdb для Castle Core/Windsor и (управляя шагом в код), это было преступником. –