相关疑难解决方法(0)

.net核心石英依赖注入

如何在.net内核中配置Quartz 以使用依赖注入?我使用标准的.net核心依赖机制.在实现IJob的类的构造函数中,我需要注入一些依赖项.

.net c# dependency-injection quartz.net asp.net-core

12
推荐指数
3
解决办法
7641
查看次数

Quartz.Net依赖注入.Net核心

在我的项目中,我必须使用Quartz,但我不知道我做错了什么.

的JobFactory:

public class IoCJobFactory : IJobFactory
{
    private readonly IServiceProvider _factory;

    public IoCJobFactory(IServiceProvider factory)
    {
        _factory = factory;
    }
    public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
    {
        return _factory.GetService(bundle.JobDetail.JobType) as IJob;
    }

    public void ReturnJob(IJob job)
    {
        var disposable = job as IDisposable;
        if (disposable != null)
        {
            disposable.Dispose();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

QuartzExtensions:

public static class QuartzExtensions
{
    public static void UseQuartz(this IApplicationBuilder app)
    {
        app.ApplicationServices.GetService<IScheduler>();
    }

    public static async void AddQuartz(this IServiceCollection services)
    {
        var props = new NameValueCollection …
Run Code Online (Sandbox Code Playgroud)

.net c# scheduler quartz.net asp.net-core

10
推荐指数
3
解决办法
6485
查看次数

使用FluentScheduler - ASP.NET核心MVC

我目前有一个简单的网站设置ASP.NET Core MVC(.NET 4.6.1),我想定期做一些过程,如每天结束时自动发送电子邮件给注册会员.

在做了一些搜索之后,我遇到了两个常见的解决方案 - Quartz.NET和FluentScheduler.

基于这个SO线程,我发现使用FluentScheduler的方法更容易消化并用于我的简单任务.在我的Program.cs类中快速实现以下代码行之后,我每分钟都成功发送电子邮件(用于测试目的).

public class Program
{
    public static void Main(string[] args)
    {
        var host = new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();

            var registry = new Registry();
            JobManager.Initialize(registry);

            JobManager.AddJob(() => MyEmailService.SendEmail(), s => s
                  .ToRunEvery(1)
                  .Minutes());

            host.Run();

    }
}
Run Code Online (Sandbox Code Playgroud)

但是,现在除了发送电子邮件之外,我还需要进行一些后端处理,例如在发送邮件时更新数据库中的用户记录.为此,我通常将我的实体框架上下文注入到我的控制器的构造函数中,并使用它来获取/更新SQL记录.

我的问题是,因为我无法真正将这些服务注入main方法,哪里是初始化注册表和添加调度作业的适当位置?

感谢您的帮助,我对此有点新意,所以我会非常感谢您的指导!

asp.net-core-mvc fluentscheduler

7
推荐指数
1
解决办法
3639
查看次数

C# - 当网站上没有活动时,Quartz调度程序停止运行

我用石英调度程序创建了asp.net站点.作业在后台运行,网站上没有其他活动.

Quartz调度程序每30分钟安排一次.

IIS启动后,Scheduler正常运行.

但过了一段时间,Scheduler停止运行(大约1小时).

如果在站点上有一个或多个活动作为用户登录或查看仪表板,则Scheduler会正确运行.

但是当现场没有任何活动时,它就会停止运行.

如果现场没有活动,如何保持我的调度程序的所有时间?

P/s:我知道我的问题可能与其他问题重复.但我仍然会问,因为我无法评论其他问题的答案.

编辑:

Day Running at: 7/14/2016 4:00:00 AM
--
Day Running at: 7/14/2016 4:30:00 AM
--
Day Running at: 7/14/2016 5:00:00 AM
--
Stopped running
--
Day Running at: 7/14/2016 2:00:00 PM
--
Day Running at: 7/14/2016 2:30:00 PM
--
Day Running at: 7/14/2016 3:00:00 PM
--
Stopped running
--
Run Code Online (Sandbox Code Playgroud)

c# asp.net quartz-scheduler

2
推荐指数
1
解决办法
1875
查看次数