LifestylePerWebRequest

LifestylePerWebRequest

我有一个Web应用程序,其中许多组件都使用.LifestylePerWebRequest()注册了,现在我决定实现 Quartz.NET (一个.NET作业调度库),该库在单独的线程中执行,而不是在Request线程中执行。

这样,HttpContext.Current产生null。到目前为止,我的服务,存储库和IDbConnection都是使用.LifestylePerWebRequest()实例化的,因为它使在请求结束时更容易处置它们。

现在,我想在两种情况下都使用这些组件,在Web请求期间,我希望它们保持不受影响;在非请求上下文中,我希望它们使用其他生活方式,我认为自己可以自己处理,但是我应该怎么做关于根据当前上下文为组件选择生活方式的有关内容?

目前,我注册服务(例如),如下所示:

container.Register(
    AllTypes
        .FromAssemblyContaining<EmailService>()
        .Where(t => t.Name.EndsWith("Service"))
        .WithService.Select(IoC.SelectByInterfaceConvention)
        .LifestylePerWebRequest()
);

我认为我应该使用某种扩展方法,但我只是看不到它。

最佳答案

您应该使用Hybrid Lifestyle中的castleprojectcontrib

07-24 16:52