Я знаю, что вопрос уже задавался здесь раньше, но, похоже, я не могу его запустить.
В моем файле startup.cs есть следующее:
services.AddDbContextPool<WorkshopPlanningDbContext>(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("WorkshopPlanningDb"));
});
//Db data
services.AddScoped<IEmployeeData, SqlEmployeeData>();
services.AddScoped<IPlanningData, SqlPlanningData>();
services.AddScoped<ICalendarStatusData, SqlCalendarStatusData>();
services.AddScoped<IMachineTypeSpecs, SqlMachineTypeSpecs>();
services.AddScoped<IMoHistoryData, SqlMoHistoryData>();
//Cron Jobs
services.Configure<ProTimeConfig>(Configuration.GetSection("ProTimeSftp"));
services.AddSingleton<IScheduledTask, RetrieveProTimeData>();
services.AddSingleton<IScheduledTask, RemoveOldProTimeData>();
services.AddScheduler((sender, args) =>
{
args.SetObserved();
});
Мои занятия выглядят следующим образом:
RetrieveProTimeData:
public class RetrieveProTimeData : IScheduledTask
{
private readonly ICalendarStatusData _calendarStatusData;
private readonly IOptions<ProTimeConfig> _proTimeConfig;
public string Schedule => "10 6-18 * * *";
public RetrieveProTimeData(ICalendarStatusData calendarStatusData, IOptions<ProTimeConfig> proTimeConfig)
{
this._calendarStatusData = calendarStatusData;
this._proTimeConfig = proTimeConfig;
}
}
Когда я запускаю код, я получаю исключение:
Невозможно использовать сервис с ограниченным доступом «WorkshopPlanning.Data.ICalendarStatusData» из одноэлементного «WorkshopPlanning.Jobs.Scheduling.IScheduledTask»
Я получаю исключение при следующем вызове:
return services.AddSingleton<IHostedService, SchedulerHostedService>(serviceProvider =>
{
var instance = new SchedulerHostedService(serviceProvider.GetServices<IScheduledTask>());
instance.UnobservedTaskException += unobservedTaskExceptionHandler;
return instance;
});
И конкретно в строке:
var instance = new SchedulerHostedService (serviceProvider.GetServices ());
Я не знаю, что происходит не так. Это приложение, которое я «унаследовал» от другого разработчика. Он не знает, что не так, поскольку он говорит, что раньше он работал нормально.