赞
踩
在前一篇文章,我们了解了如何通过.NET6+Quartz开发基于控制台应用程序的定时任务,今天继续在之前的基础上,进一步讲解基于ASP.NET Core MVC+Quartz实现定时任务的可视化管理页面,仅供学习分享使用,如有不足之处,还请指正。
在Visual Studio 2022中,首先创建基于ASP.NET Core MVC 的项目,根据步骤进行创建即可,如下所示:
项目创建成功后,通过NuGet包管理器,安装对应组件,本示例仅演示Quartz相关内容,所以只需要安装相关组件即可,如下所示:
组件安装后,需要在Progrom.cs中进行注入,才可以在启动时加载对应内容。如下所示:
- using GZY.Quartz.MUI.Extensions;
- using QuartzAdmin.QuartzA;
-
- var builder = WebApplication.CreateBuilder(args);
- // Add services to the container.
- builder.Services.AddControllersWithViews();
- builder.Services.AddControllers();
- //1. 添加QuartzUI服务
- builder.Services.AddQuartzUI();
- //2. 添加基于DLL模式的Quartz任务支持
- builder.Services.AddQuartzClassJobs();
- var app = builder.Build();
-
- // Configure the HTTP request pipeline.
- if (!app.Environment.IsDevelopment())
- {
- app.UseExceptionHandler("/Home/Error");
- // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
- app.UseHsts();
- }
-
- app.UseHttpsRedirection();
- app.UseStaticFiles();
-
- app.UseRouting();
-
- app.UseAuthorization();
- //3.使用Quartz组件
- app.UseQuartz();
-
- app.MapControllerRoute(
- name: "default",
- pattern: "{controller=Home}/{action=Index}/{id?}");
- //在Use中注册单例实例
- app.Use(async (context, next) =>
- {
-
-
- if (next != null)
- {
- await next.Invoke();
- }
- });
- app.Run();
在配置好后,运行程序,默认打开的是首页,手动输入网址https://localhost:7172/QuartzUI,即可看到Quartz管理页面,如下所示:
在小型项目中,如果为了定时任务,再去创建WebAPI接口,会比较麻烦,所以基于DLL方式的任务更常见,在Quartz框架下,创建基于DLL方式的任务,需要实现IJobService接口,此接口是GZY.Quartz.MUI组件库自带的默认接口,如下所示:
- using GZY.Quartz.MUI.BaseService;
-
- namespace QuartzAdmin.QuartzA.Job
- {
- public class TestJob : IJobService
- {
- public string ExecuteService(string parameter)
- {
- Console.WriteLine($"测试任务被执行了:{parameter}.");
- return String.Empty;
- }
- }
- }
任务创建成功后,在页面新建任务时,选择DLL方式,会自动识别TestJob,选择即可,如下所示:
基于WebAPI的定时任务,是所有的WebAPI接口都可以作为调用的任务,无需特殊处理。在ASP.NET Core MVC项目中,默认情况下是支持WebAPI的,首先创建测试WebAPI接口,如下所示:
- using Microsoft.AspNetCore.Http;
- using Microsoft.AspNetCore.Mvc;
-
- namespace QuartzAdmin.Controllers
- {
- [Route("api/[controller]/[action]")]
- [ApiController]
- public class TestApiController : ControllerBase
- {
- [HttpGet]
- public void Test(string parameters)
- {
- Console.WriteLine($"test web api {parameters},---{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
- }
- }
- }
在任务管理页面,新建任务,任务类型选择API,URL就是WebAPI的接口网址,如下所示:
默认情况下,创建的任务是停止状态,选择任务,开启任务即可。如果任务正在运行,也可以暂停任务。或者删除任务。如下所示:
通过点击具体任务右侧的执行记录按钮,可以查看执行日志。如果有执行过程中有错误,也会显示,成功则不显示任何信息,如下所示:
好了,以上就是ASP.NET Core MVC+Quartz开发定时任务管理页面的全部内容,旨在抛砖引玉,一起学习,共同进步。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。