瞬态生活方式需要HttpContext?

时间:2016-12-20 23:48:33

标签: httpwebrequest inversion-of-control castle-windsor

我正在注册我的组件:

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?

1 个答案:

答案 0 :(得分:3)

查看完整的异常消息。您的根组件可能是暂时的,但异常表示其中一个依赖项使用每个Web请求生活方式。

看看温莎的diagnostics debugger view,这可能有助于你找到它。