0

我只是想用 ABP.IO 项目和 Hangfire 运行后台作业(我已经用 aspnetboilerplate 完成了它,没有任何问题)

每次我的 recurringjob 开始它都会抛出这个错误:

A suitable constructor for type 'AbpIo.TachePlan.ITachePlanifiee' could not be located.

对于这个测试,我只是在合同项目中编写了一个接口

using System;
using System.Collections.Generic;
using System.Text;

namespace AbpIo.TachePlan
{
    public interface ITachePlanifiee
    {
        void Test();
    }
}

以及在Application项目中的实现

using System;
using System.Collections.Generic;
using System.Text;

    namespace AbpIo.TachePlan
    {
        public class TachePlanifiee : ITachePlanifiee
        {
           
            public TachePlanifiee()
            { }
    
            public void Test()
            {
                //Great job
            }
        }
    }

在网络项目中

public override void OnApplicationInitialization(ApplicationInitializationContext context)
        {
//default ABP.IO code
            app.UseHangfireDashboard();

            
            RecurringJob.AddOrUpdate<ITachePlanifiee>(x=> x.Test(), "*/15 * * * *"); 
        }

但结果是

System.InvalidOperationException
A suitable constructor for type 'AbpIo.TachePlan.ITachePlanifiee' could not be located. Ensure the type is concrete and services are registered for all parameters of a public constructor.

System.InvalidOperationException: A suitable constructor for type 'AbpIo.TachePlan.ITachePlanifiee' 

could not be located. Ensure the type is concrete and services are registered for all parameters of a public constructor.

   at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance(IServiceProvider provider, Type instanceType, Object[] parameters)
   at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetServiceOrCreateInstance(IServiceProvider provider, Type type)
   at Hangfire.AspNetCore.AspNetCoreJobActivatorScope.Resolve(Type type)
   at Hangfire.Server.CoreBackgroundJobPerformer.Perform(PerformContext context)
   at Hangfire.Server.BackgroundJobPerformer.<>c__DisplayClass9_0.<PerformJobWithFilters>b__0()
   at Hangfire.Server.BackgroundJobPerformer.InvokePerformFilter(IServerFilter filter, PerformingContext preContext, Func`1 continuation)
   at Hangfire.Server.BackgroundJobPerformer.<>c__DisplayClass9_1.<PerformJobWithFilters>b__2()
   at Hangfire.Server.BackgroundJobPerformer.PerformJobWithFilters(PerformContext context, IEnumerable`1 filters)
   at Hangfire.Server.BackgroundJobPerformer.Perform(PerformContext context)
   at Hangfire.Server.Worker.PerformJob(BackgroundProcessContext context, IStorageConnection connection, String jobId)

我需要帮助,因为我不明白我的错误在哪里

问候

4

1 回答 1

2

谢谢你的评论,他们帮助了我。

所以我发现了我的错误。

我的接口没有实现这些接口之一

  • 瞬态依赖
  • IS单例依赖
  • IScopedDependency

https://docs.abp.io/en/abp/latest/Dependency-Injection

using Volo.Abp.DependencyInjection;

namespace AbpIo.TachePlan
{
    public interface ITachePlanifiee : ITransientDependency
    {
        void Test();
    }
}
于 2020-09-22T08:06:53.553 回答