У меня есть JobFactory : IJobFactory
, который работает.Я могу просто создавать запланированные задания и без проблем вставлять простые зависимости, но у меня есть проблема с одной проблемой.Одна из зависимостей сама зависит от HttpClient
, но это, похоже, не работает.
Например,
services.AddHttpClient<Dependency>("dependency");
services.AddSingleton(typeof(Dependency));
using (var serviceProvider = services.BuildServiceProvider())
{
var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler();
scheduler.JobFactory = new JobFactory(serviceProvider);
await scheduler.Start();
var job = JobBuilder.Create<Job1>()
.WithIdentity("job1")
.Build();
var trigger = TriggerBuilder.Create()
.WithIdentity("trigger1")
.StartNow()
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(1)
.RepeatForever())
.Build();
await scheduler.ScheduleJob(job, trigger);
}
с конструктором зависимости
public Dependency(HttpClient httpClient)
{
// <snipped>
}
и конструктор задания:
public Job1(Dependency dependency)
{
// <snipped>
}
Когда я пытаюсь запустить это, мне говорят, что задание выдает необработанное исключение.Отладка через мой JobFactory говорит мне, что httpClient вообще не вводится.Разве .AddHttpClient не должен обрабатывать это?Разве это не работает из-за нескольких уровней DI?Можно ли сделать по-другому?
Обратите внимание, я попытался вручную зарегистрировать Job1
, как я сделал Dependency
, но это не решило проблему.