瞬态生活方式需要 HttpContext?

Transient Lifestyle requires 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 is null. PerWebRequestLifestyle can only be used in ASP.Net"

这让我很困惑,因为我选择的生活方式是 Transient,而不是 PerWebRequest。 当然,HttpContext 在计划任务期间不存在 - 但我真的不需要它,我只想要一个不会与任何 Web 请求交互的存储库实例。

那么,为什么 Castle Windsor 在解析我的组件时坚持要求 HttpContext?

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

看看温莎 diagnostics debugger view,这可能会帮助您找到它。