1

我正在我的应用程序中使用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 类型, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)\r\n
在 System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)\r\n at System.Activator.CreateInstance(Type type, Boolean nonPublic)\r\n at System.Activator.CreateInstance(Type type) \r\n 在 Hangfire.JobActivator.SimpleJobActivatorScope.Resolve(类型类型)\r\n
在 Hangfire.Server.CoreBackgroundJobPerformer.Perform(PerformContext context)\r\n 在 Hangfire.Server.BackgroundJobPerformer.<>c__DisplayClass8_0.b__0()\r\n 在 Hangfire.Server.BackgroundJobPerformer.InvokePerformFilter(IServerFilter filter, PerformingContext preContext, Func 1 续)\r\n 在 Hangfire.Server.BackgroundJobPerformer.PerformJobWithFilters(PerformContext 上下文,IEnumerable`1 过滤器)\r\n 在 Hangfire.Server.BackgroundJobPerformer.Perform(PerformContext 上下文)\r\n 在 Hangfire.Server.Worker .PerformJob(BackgroundProcessContext 上下文,IStorageConnection 连接,字符串 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));
4

0 回答 0