Quartz.Net Job整合DI的生命週期问题

Quartz.Net 提供直接整合.Net Core DI的扩展,安装底下的套件即可

Install-Package Quartz.Extensions.DependencyInjection

而在Startup.cs中可以决定Job注入的物件之生命週期,有两种模式

q.UseMicrosoftDependencyInjectionJobFactory();q.UseMicrosoftDependencyInjectionScopedJobFactory();

UseMicrosoftDependencyInjectionJobFactory()方法
Quartz.Net官方说明意思为-保持DI配置不变,需要具有public的无参数构造函数。MS DI预设会产生临时实例,所以不能与EF Core的DbContext等Scope Service一起使用.
实际上在Asp.net core中测试发现,似乎相同的Job只会New一个实例,因此如果Job注入的DbContext都会是同一个实例,导致DbContext使用上出错.
而改用UseMicrosoftDependencyInjectionScopedJobFactory()方法,Job实例就与MS DI的Scope範围一致了.


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章