我有 ASP.NET MVC 3.0 应用程序,数据层使用 EF Code First。我已经实现了一个工作单元模式,我在 HttpContext.Current.Items[SomeKey] 集合上绑定(bind)了工作单元的上下文。工作单元在 Controller 上的 OnActionExecuting/Executed 事件中创建和提交。我正在使用 Windsor CaSTLe 实例化存储库。

现在我需要使用 Quartz.net 在我的应用程序中定期运行作业,这项作业也需要使用很少的存储库。问题是,在 SchedulerJob 实现中,没有 HttpContext 可用(确实)。在这种情况下,如何从 Quartz.net Job 实例化存储库(将 UnitOfWorkFactory 作为构造函数参数)?如何替换缺少的 HttpContext?我可能需要实现另一个 UnitOfWorkFactory,但我不确定我可以在哪里绑定(bind)我的上下文以及如何为 Quartz.net 线程注册不同的工厂。你能告诉我一个方法或模式吗?谢谢你。

请您参考如下方法:

您可能需要考虑编写自己的作业工厂并在那里注入(inject)您的存储库。我写了一篇关于如何做到这一点的帖子 here .温莎也有 facitlity用于直接集成 Quartz.net。

最后一条评论...如果您要安排长时间运行的作业或安排定期运行的作业,您不应该在您的 Web 应用程序中托管 Quartz.Net。 IIS 进程回收不会让您的调度程序正常运行。 Windows服务是要走的路。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!