瞬态生活方式需要 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,这可能会帮助您找到它。
我正在这样注册我的组件:
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,这可能会帮助您找到它。