相关疑难解决方法(0)

如何创建Quartz.NET的工作,需要使用autofac注入

我试图让Quartz.net(2.1.2)使用IoC容器(autofac),因为我需要在预定的作业中使用服务.我在这个主题上找到了类似的帖子,但我似乎找不到一个具有autofac特定注册示例的帖子.

以下帖子涉及我遇到的同一问题:

如何使用Quartz.net 2.0安排任务?

但是,我相信我缺少的那部分是答案说"并且不要忘记在IoC容器中注册作业".我不确定如何准确地做到这一点,因为到目前为止我所尝试的一切都没有奏效.

在下面的示例中,"HelloJob"将运行,但每当我尝试将releaseService注入"ReleaseJob"时,它都拒绝运行.

更新: 我在DependencyRegistration.cs部分标记了我认为问题所在的代码.

更新2: 一些与我需要做的相关的链接可能有所帮助(我已经完成了所有这些但仍然无法弄清楚如何使用autofac):

如何以PRO方式使用Quartz.NET? - http://blog.goyello.com/2009/09/21/how-to-use-quartz-net-in-pro-way/

Autofac和Quartz.NET - http://blog.humann.info/post/2013/01/30/Autofac-and-QuartzNET.aspx

使用Quartz.NET和Simple Injector进行构造函数注入 - 使用Quartz.NET和Simple Injector进行构造函数注入

ASP.Net MVC 3,Ninject和Quartz.Net - 如何? - ASP.Net MVC 3,Ninject和Quartz.Net - 如何?

这是相关代码:

Global.asax中

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);

        var dependencyRegistration = new DependencyRegistration();
        dependencyRegistration.Register();

        ModelValidatorProviders.Providers.Clear();
        ModelValidatorProviders.Providers.Add(new FluentValidationModelValidatorProvider(new ValidatorFactory()));

        DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
    }
Run Code Online (Sandbox Code Playgroud)

DependencyRegistration.cs

public class DependencyRegistration
{
    public void Register()
    {
        var builder = new ContainerBuilder();

        builder.RegisterControllers(Assembly.GetExecutingAssembly());
        builder.RegisterAssemblyModules(Assembly.GetExecutingAssembly());

        // Validation
        builder.RegisterType<ValidatorFactory>()
            .As<IValidatorFactory>()
            .InstancePerHttpRequest();

        AssemblyScanner findValidatorsInAssembly …
Run Code Online (Sandbox Code Playgroud)

autofac asp.net-mvc-3 quartz.net-2.0

15
推荐指数
1
解决办法
9802
查看次数

使用 Quartz.NET 3.0.3 和 Simple Injector How To 进行构造函数注入

我正在尝试在 Windows 服务中使用 Quartz.Net v3.0.3 和 Simple Injector。

我有一个工作类,我想在其中注入一些依赖项,例如我的记录器。

public class JobWorker :  IJob
{
    private ILogger _logger;

    public JobWorker(ILogger logger)
    {
        _logger = logger;
    }

    public Task Execute(IJobExecutionContext context)
    {
        return Task.Run(() =>_logger.Log("Do Work"));
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试Container.Register<IJob, JobWorker>();在我的 DI 层上注册,但这没有帮助。

如果我删除注入的依赖项并简单地使用默认的无参数构造函数,则作业会正确触发。

根据 Steven 下面的帖子,建议是创建一个工厂,但是在新框架的上下文中提供的答案已经过时,我完全不知道如何将依赖项注入作业。

使用 Quartz.NET 和 Simple Injector 进行构造函数注入

c# windows-services dependency-injection quartz.net simple-injector

3
推荐指数
1
解决办法
4364
查看次数