У меня есть свой webApi, который я хотел бы настроить повторяющиеся задания. Где я должен разместить код? Кроме того, поскольку я использую SimpleInjector, как я могу получить службу, на которой мне нужно выполнить метод?
В настоящее время у меня есть метод расширения для настройки HangFire так
public static IApplicationBuilder UseHangFireServer(this IApplicationBuilder builder, Container container, BackgroundJobServerOptions options, JobStorage storage)
{
if (builder == null) throw new ArgumentNullException("builder");
if (options == null) throw new ArgumentNullException("options");
if (storage == null) throw new ArgumentNullException("storage");
var server = new BackgroundJobServer(options, storage);
var lifetime = builder.ApplicationServices.GetRequiredService<IApplicationLifetime>();
lifetime.ApplicationStopped.Register(server.Dispose);
RecurringJob.AddOrUpdate("run-triggers", () => { "HERE I NEED A SERVICE, USING SIMPLE INJECTOR?" }, Cron.Hourly);
return builder;
}
Я пытался использовать это
RecurringJob.AddOrUpdate("run-triggers", () => container.GetInstance<IMyService>().Run(), Cron.Hourly);
Но я получаю сообщение об ошибке, говорящее
IMyService зарегистрирован как образ жизни «Область контекста выполнения», но экземпляр запрашивается вне контекста области контекста выполнения.
я тоже пробовал
RecurringJob.AddOrUpdate("trigger-queue", () => builder.ApplicationServices.GetService<IMyService>().Queue(), Cron.Hourly);
Но это возвращает ноль.