错误:
Quartz.SchedulerException : Scheduler with name 'DefaultQuartzScheduler'
已存在。
我猜想 Web 应用程序工厂被使用了 N 次进行 N 次测试,而调度程序被创建了那么多次。
将
[assembly: CollectionBehavior(DisableTestParallelization = true)]
应用于命名空间是可行的,但在我看来这是一种黑客行为。运行 ASP.NET DI 时,我无法传递任何 Scheduler 实例。
这是我的 DI 配置的一部分:
services.AddQuartz(options =>
{
options.UseMicrosoftDependencyInjectionJobFactory();
});
services.AddQuartzHostedService(options =>
{
options.WaitForJobsToComplete = true;
});
通过从我的应用程序工厂中删除所有托管服务解决了此问题。