首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >未注册的服务'Abp.Quartz.IQuartzScheduleJobManager‘

未注册的服务'Abp.Quartz.IQuartzScheduleJobManager‘
EN

Stack Overflow用户
提问于 2018-06-08 19:00:22
回答 2查看 1.1K关注 0票数 0

我已经下载了适用于ASP.NET样板的.NET核心+ Vue模板(v3.7.0)。

我补充道:

通过引用http://aspnetboilerplate.com/Pages/Documents/Quartz-Integration.

  • NuGet项目中的xxx.Application project.

  • MyAbpQuartzModule.csAbp.Quartz中的xxx.Applicationproject.

  • MyAbpQuartzModule.csAbp.Quartz来编写

  • 代码:

代码语言:javascript
复制
[DependsOn(typeof(AbpAutoMapperModule), typeof(AbpQuartzModule))]
public class MyAbpQuartzModule : AbpModule
{
  public override void Initialize()
  {
    IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
  }
}

xxx.Web.Host项目中的

  • MyAbpQuartzController.cs

代码语言:javascript
复制
public class MyAbpQuartzController : AbpController
{
  private readonly IQuartzScheduleJobManager _jobManager;

  public MyAbpQuartzController(IQuartzScheduleJobManager jobManager)
  {
      _jobManager = jobManager;
  }

  public async Task<ActionResult> ScheduleJobWithTask()
  {
      await _jobManager.ScheduleAsync<MyLogJob>(
          job =>
          {
              job.WithIdentity("MyLogJobIdentity", "MyGroup")
                  .WithDescription("A job to simply write logs.");
          },
          trigger =>
          {
              trigger.StartNow()
                  .WithSimpleSchedule(schedule =>
                  {
                      schedule.RepeatForever()
                          .WithIntervalInSeconds(5)
                          .Build();
                  });
          });

      return Content("OK, scheduled!");
  }

  public ContentResult TestMyAbpQuartz(string message = "")
  {
      return Content("OK, scheduled!");
  }
}

我调试了xxx.Web.Host项目,但它不起作用。

http://localhost:21021/MyAbpQuartz/TestMyAbpQuartz页面返回:

“此页不工作。本地主机当前无法处理此请求。HTTP错误500”

我认为QuartzScheduleJobManager没有成功注册。

那么,我该怎么做呢?

Web.Host/App_Data/log.txt中错误消息的一部分

代码语言:javascript
复制
ERROR 2018-06-08 19:19:04,161 [5    ] Mvc.ExceptionHandling.AbpExceptionFilter - Can't create component 'MyNetCoreWithVueProject.Web.Host.Controllers.MyAbpQuartzController' as it has dependencies to be satisfied.

'MyNetCoreWithVueProject.Web.Host.Controllers.MyAbpQuartzController' is waiting for the following dependencies:
- Service 'Abp.Quartz.IQuartzScheduleJobManager' which was not registered.

Castle.MicroKernel.Handlers.HandlerException: Can't create component 'MyNetCoreWithVueProject.Web.Host.Controllers.MyAbpQuartzController' as it has dependencies to be satisfied.

'MyNetCoreWithVueProject.Web.Host.Controllers.MyAbpQuartzController' is waiting for the following dependencies:
- Service 'Abp.Quartz.IQuartzScheduleJobManager' which was not registered.

   at Castle.MicroKernel.Handlers.DefaultHandler.AssertNotWaitingForDependency()
   at Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext context, Boolean requiresDecommission, Boolean instanceRequired, Burden& burden)
   at Castle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext context, Boolean instanceRequired)
   at Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler handler, Type service, IDictionary additionalArguments, IReleasePolicy policy)
   at Castle.MicroKernel.DefaultKernel.Castle.MicroKernel.IKernelInternal.Resolve(Type service, IDictionary arguments, IReleasePolicy policy)
   at Castle.Windsor.MsDependencyInjection.ScopedWindsorServiceProvider.GetServiceInternal(Type serviceType, Boolean isOptional) in D:\Github\castle-windsor-ms-adapter\src\Castle.Windsor.MsDependencyInjection\ScopedWindsorServiceProvider.cs:line 55
   at Microsoft.AspNetCore.Mvc.Controllers.ControllerFactoryProvider.<>c__DisplayClass5_0.<CreateControllerFactory>g__CreateController|0(ControllerContext controllerContext)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeInnerFilterAsync>d__14.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.<InvokeNextExceptionFilterAsync>d__23.MoveNext()
INFO  2018-06-08 19:19:04,967 [5    ] ore.Mvc.Internal.ControllerActionInvoker - Executed action MyNetCoreWithVueProject.Web.Host.Controllers.MyAbpQuartzController.TestMyAbpQuartz (MyNetCoreWithVueProject.Web.Host) in 833.6801ms
ERROR 2018-06-08 19:19:05,059 [5    ] Microsoft.AspNetCore.Server.Kestrel      - Connection id "0HLED66DNH26L", Request id "0HLED66DNH26L:00000004": An unhandled exception was thrown by the application.
Castle.MicroKernel.Handlers.HandlerException: Can't create component 'MyNetCoreWithVueProject.Web.Host.Controllers.MyAbpQuartzController' as it has dependencies to be satisfied.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-10 00:17:08

AbpQuartzModule应注册IQuartzScheduleJobManager

我看到你已经在MyAbpQuartzModule上安装了[DependsOn(typeof(AbpQuartzModule))]

*WebHostModule添加[DependsOn(typeof(MyAbpQuartzModule))]

代码语言:javascript
复制
[DependsOn(
    typeof(AbpProjectNameWebCoreModule),
    typeof(MyAbpQuartzModule))]
public class AbpProjectNameWebHostModule : AbpModule
票数 0
EN

Stack Overflow用户

发布于 2018-06-09 02:54:16

如果您想要注册一个不符合常规注册规则的特定类。ASP.NET样板将ITransientDependency、IPerWebRequestDependency和ISingletonDependency接口作为快捷方式提供。

代码语言:javascript
复制
public interface IQuartzScheduleJobManager
{
    //...
}

public class QuartzScheduleJobManager: IQuartzScheduleJobManager, ITransientDependency
{
    //...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50759180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档