iT邦幫忙

0

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範圍一致了.


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言