diff --git a/src/dotnet/QuantEngine.Web/Services/SchedulerService.cs b/src/dotnet/QuantEngine.Web/Services/SchedulerService.cs index 301edfc9..69d118b3 100644 --- a/src/dotnet/QuantEngine.Web/Services/SchedulerService.cs +++ b/src/dotnet/QuantEngine.Web/Services/SchedulerService.cs @@ -289,8 +289,16 @@ public static class HangfireServiceExtensions Authorization = new[] { new HangfireAuthorizationFilter() } }); - // Initialize schedules - var schedulerService = serviceProvider.GetRequiredService(); + // Initialize schedules. SchedulerService is registered as Scoped + // (AddScoped above), so it cannot be resolved directly from the + // root provider passed in here (app.Services) -- doing so silently + // failed every startup with "Cannot resolve scoped service + // 'SchedulerService' from root provider", meaning the recurring + // jobs were never being freshly registered/updated on boot (they + // only appeared to work because Hangfire persists them in + // PostgreSQL from whichever startup last managed to run this). + using var scope = serviceProvider.CreateScope(); + var schedulerService = scope.ServiceProvider.GetRequiredService(); schedulerService.InitializeSchedules(); return app;