У меня есть. net Core 2.1 веб-приложение с библиотекой Hangfire (1.7.9), работающей на postgres (12).
Я пытался добавить повторяющуюся работу, но каждый раз, когда Hangfire пытался запустить его, выдает исключение:
"Hangfire.Common.JobLoadException: не удалось загрузить задание. Подробности см. во внутреннем исключении. ---> Newtonsoft. Json .JsonSerializationException: невозможно найти конструктор для использования для типа Microsoft.Extensions.FileProviders.PhysicalFileProvider. Класс должен иметь конструктор по умолчанию, один конструктор с аргументами или конструктор, помеченный атрибутом JsonConstructor. Path 'Providers [0] .Source.FileProvider. Root ', строка 1, позиция 490. "
Мой файл запуска (раздел Hangfire):
private void ConfigureHangfire(IServiceCollection services)
{
var settings = Configuration.GetSettings<HangfireSettings>();
GlobalConfiguration.Configuration
.SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
.UseSimpleAssemblyNameTypeSerializer()
.UseRecommendedSerializerSettings()
.UsePostgreSqlStorage(Configuration.GetConnectionString("service_user"), new PostgreSqlStorageOptions
{
SchemaName = "hangfire",
QueuePollInterval = TimeSpan.FromSeconds(15),
UseNativeDatabaseTransactions = true,
PrepareSchemaIfNecessary = true,
TransactionSynchronisationTimeout = TimeSpan.FromMinutes(15)
});
var options = new PostgreSqlStorageOptions
{
PrepareSchemaIfNecessary = settings.CreateDatabaseAutomatically
};
services.AddHangfire(config => config.UsePostgreSqlStorage(Configuration.GetConnectionString("service_user"), options));
DailyDatabaseUpdate.TurnOnDailyUpdateScheduleWorker(9, 51, Configuration);
}
После теста я понял, что мой метод DailyDatabaseUpdate.TurnOnDailyUpdateScheduleWorker (9, 51, Конфигурация); содержит параметр Конфигурация IConfiguration . Когда я его убрал, все работает. Но это взаимодействие имеет решающее значение для получения моей строки подключения.
Как ее можно решить?