Не могу поставить в очередь мою работу на сервере зависания

Я работаю над постановкой задач, используя Hangfire в моем приложении.

мое заявление о работе в очереди приведено ниже,

string jobId = BackgroundJob.Enqueue(() => 
     strategy.get(typeof(_service.Engine.Summary), cpdata));

когда это успешно поставит в очередь мою работу, но получило сообщение об ошибке в таблице состояний, как это,

"FailedAt": "2018-03-21T13: 14: 46.0172303Z", "ExceptionType": "System.MissingMethodException", "ExceptionMessage": "Для этого объекта не определен конструктор без параметров.",
"ExceptionDetails": "System.MissingMethodException: для этого объекта не определен конструктор без параметров. \ R \ n в System.RuntimeTypeHandle.CreateInstance (тип RuntimeType, логический publicOnly, логический noCheck, логический и canBeCached, RuntimeMethoNecurity_and_Chent_HeNhodeCh)
в System.RuntimeType.CreateInstanceSlow(логическое publicOnly, логическое skipCheckThis, логическое fillCache, StackCrawlMark& ​​stackMark)\r\n в System.Activator.CreateInstance (тип Type, логический nonPublic) \ r \ n в типе System.Activ \ r \ n at Hangfire.JobActivator.SimpleJobActivatorScope.Resolve(Type type) \ r \ n
в Hangfire.Server.CoreBackgroundJobPerformer.Perform(контекст PerformContext) \ r \ n в Hangfire.Server.BackgroundJobPerformer.<>c__DisplayClass8_0.b__0()\r\n в Hangfire.Server.BackgroundJobPerforxtteFF 1 продолжение) \ r \ n в Hangfire.Server.BackgroundJobPerformer.PerformJobWithFilters (контекст PerformContext, фильтры IEnumerable`1) \ r \ n в Hangfire.Server.BackgroundJobPerformer.Perform(контекст PerformContext) \ r \ n в Hangfire.er.PerformJob(контекст BackgroundProcessContext, соединение IStorageConnection, String jobId)"

Это проблема DI, которая создает этот тип ошибки?

Я использовал вызывающий метод в Enqueue, используя ссылку по этой ссылке

Заводской метод с DI и IOC

Например,

var strategy = new CarStrategy(new ICarFactory[] {
    new Car1Factory(dep1, dep2, dep3),
    new Car2Factory(dep4, dep5, dep6),
    new Car3Factory(dep7, dep8, dep9)
});

Мой код такой,

var strategy = new Strategy(new ICP[] {
                new _Services.Engine.Detail.Detail(),
                new _1Services.Engine.Summary.Summary(),
                });

var CP = PrepareCPModelForEngine(c);

string jobId = BackgroundJob.Enqueue(() => 
strategy.get(typeof(_Services.Engine.Summary.Summary), cp));

0 ответов

Другие вопросы по тегам