我正在注册我的组件:
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为null.PerWebRequestLifestyle只能用于ASP.Net”
让我感到困惑,因为我选择的生活方式是Transient,而不是PerWebRequest。 当然,HttpContext在计划任务期间不存在 - 但我真的不需要它,我只想要一个不与任何Web请求交互的存储库实例。
那么,为什么Castle Windsor在解析我的组件时坚持要求HttpContext?
答案 0 :(得分:3)
查看完整的异常消息。您的根组件可能是暂时的,但异常表示其中一个依赖项使用每个Web请求生活方式。
看看温莎的diagnostics debugger view,这可能有助于你找到它。