C# .NET6+SqlSugar WebApi实现定时任务Job

[复制链接]
发表于 2026-2-7 15:28:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

媒介

想想隔断前次更新博客已有几个月之久,不是我赖,是真的没时间,由于这个天下,这个行业已经开始卷的锋利了,本日腾出点时间准备写两篇文章,上一篇文章sqlsugar批量操纵数据库只是个开胃菜,本日重点是这篇文章,基于.Net6.0 WebApi的具有跨平台本领的Api 定时Job,本日重要是以dll(不是你明白的dll动态库)挂载方式实现任务,尚有基于Controller API模式,这篇就不讲了。基于如今国产化速率加速,跨平台应用及服务已经是局势所趋了。

一、效果图


二、具体实现

1.NuGet 添加包




2.Program.cs 注册(完备代码)

  1. using GZY.Quartz.MUI.Extensions;
  2. using QuartzInventory.Utilities;
  3. var builder = WebApplication.CreateBuilder(args);
  4. // Add services to the container.
  5. builder.Services.AddControllersWithViews();
  6. builder.Services.AddControllers();
  7. //1. 添加QuartzUI服务
  8. builder.Services.AddQuartzUI();
  9. //2. 添加基于DLL模式的Quartz任务支持
  10. builder.Services.AddQuartzClassJobs();
  11. //支持sqlsugar
  12. builder.Services.AddSqlsugarSetup(builder.Configuration);
  13. var app = builder.Build();
  14. // Configure the HTTP request pipeline.
  15. if (!app.Environment.IsDevelopment())
  16. {
  17.     app.UseExceptionHandler("/Home/Error");
  18.     // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
  19.     app.UseHsts();
  20. }
  21. app.UseHttpsRedirection();
  22. app.UseStaticFiles();
  23. app.UseRouting();
  24. app.UseAuthorization();
  25. //3.使用Quartz组件
  26. app.UseQuartz();
  27. app.MapControllerRoute(
  28.     name: "default",
  29.     pattern: "{controller=Home}/{action=Index}/{id?}");
  30. //在Use中注册单例实例
  31. app.Use(async (context, next) =>
  32. {
  33.     if (next != null)
  34.     {
  35.         await next.Invoke();
  36.     }
  37. });
  38. app.Run();
复制代码
3.appsettings.json设置数据库毗连(完备代码)

  1. "ConnectString": "Server=STRING\\MSSQLSERVERR2;Database=HISDB;User=sa;Password=123456;"
复制代码
4.办理方案新建Utilities文件夹实现一些资助类

1)AppSettingHelper.cs(设置文件资助类)

  1. namespace QuartzInventory.Utilities
  2. {
  3.     public class AppSettingHelper
  4.     {
  5.         /// <summary>
  6.         /// 系统配置
  7.         /// </summary>
  8.         public static IConfiguration Configuration { get; set; }
  9.         static AppSettingHelper()
  10.         {
  11.             var builder = new ConfigurationBuilder()
  12.                 .SetBasePath(Directory.GetCurrentDirectory())
  13.                 .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
  14.             Configuration = builder.Build();
  15.         }
  16.     }
  17. }
复制代码
2)SqlsugarSetup.cs( Sqlsugar启动类)

  1. using SqlSugar;
  2. namespace QuartzInventory.Utilities
  3. {
  4.     public static class SqlsugarSetup
  5.     {
  6.         public static void AddSqlsugarSetup(this IServiceCollection services, IConfiguration configuration,
  7.          string dbName = "ConnectString")
  8.         {
  9.             SqlSugarScope sqlSugar = new SqlSugarScope(new ConnectionConfig()
  10.             {
  11.                 DbType = SqlSugar.DbType.SqlServer,
  12.                 ConnectionString = configuration[dbName],
  13.                 IsAutoCloseConnection = true,
  14.             },
  15.                 db =>
  16.                 {      
  17.                     db.Aop.OnLogExecuting = (sql, pars) =>
  18.                     {
  19.                         Console.WriteLine(sql);//打印sql
  20.                     };
  21.                 });
  22.             services.AddSingleton<ISqlSugarClient>(sqlSugar);
  23.         }
  24.     }
  25. }
复制代码
3)新建QuartzDll文件夹,再创建Job文件夹(DLL挂载任务创建)

在Job文件夹中创建用户信息API接口.cs(为了阅读我以中文定名),这内里实现了你的定时任务。必要继承IJobService接口并实现。
  1. public class 用户信息API接口 : IJobService
复制代码
  1. public string ExecuteService(string parameter)
  2. {
  3.         //TODO:你的任务调度的业务逻辑
  4.         return "返回任务执行后的结果或业务逻辑(任意)";
  5. }
复制代码
SqlSugar.Core依靠注入
  1. private readonly ISqlSugarClient _SqlSugarDB;
  2. /// <summary>
  3. /// 依赖注入
  4. /// </summary>
  5. public 用户信息API接口(ISqlSugarClient SqlSugarDB)
  6. {
  7.     _SqlSugarDB = SqlSugarDB;
  8. }
复制代码
_SqlSugarDB 便是你的DB,比方我要查询全部用户:
  1. var userList = _SqlSugarDB.Queryable<base_user>().ToList();
复制代码
4)用户信息API接口.cs完备代码

  1. using GZY.Quartz.MUI.BaseService;using QuartzInventory.Models;using SqlSugar;namespace QuartzInventory.QuartzDll.Job{    public class 用户信息API接口 : IJobService
  2.     {        private readonly ISqlSugarClient _SqlSugarDB;        /// <summary>        /// 依靠注入        /// </summary>        public 用户信息API接口(ISqlSugarClient SqlSugarDB)        {            _SqlSugarDB = SqlSugarDB;        }        /// <summary>        /// 0 0 11 * * ?   天天中午11点触发        /// </summary>        /// <param name="parameter"></param>        /// <returns></returns>        public string ExecuteService(string parameter)        {            //这是个操纵数据库的例子            var userlist = _SqlSugarDB.Queryable<base_user>().ToList();            //TODO:你的任务调治的业务逻辑            return "返回任务实行后的效果或业务逻辑(恣意)";        }    }}
复制代码
三、开辟完后前端设置

比方我服务所在为https://localhost:44353,必要加上后缀**/QuartzUI即可体现UI设置界面。

按钮所代表的功能寄义就不外多赘述了,一眼明白。刚才写完的DLL挂载方式的Job假如举行创建?点击新建按钮,任务范例下拉选择DLL方式。

DLL范例名就是刚才你写代码的类名,还记得
用户信息API接口.cs**,没错,下拉会自动找到你对应的类名,选择用户信息API接口。

剩下的按自己实际环境设置就行了,隔断时间是Cron表达式,自己网上搜索,或点击在线天生,使定名称、分组、形貌等自界说。

总结

此Job自带日志日志体系,点击实行纪录就可以检察实行过程,而且你代码自界说抛出的非常都可以在上面体现,这种方式照旧很方便的,应用场景也很多,以为日志日志体系简朴也可自行增长物理表,自己举行纪录。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表