最近在写一个Asp.net core 的项目,其中有用到定时任务,一开始准备要用Quartz.net。毕竟在Java中和.net framework中都表现突出。

但是看了一下Quartz.net 关于Asp.net core 的文档之后决定换一个定时任务框架,于是我选择了HangFire。

开发工具:visual studio code

环境:.net core 2.0

①创建一个asp.net core mvc项目:在vs code打开一个空文件夹,然后用Ctrl+、(或点击上方的 查看集成终端)打开 终端 输入:dotnet new mvc

②安装HangFire 在 终端 输入:dotnet add package HangFire

③打开Startup文件,导入依赖项:using HangFire;

注意:

这个定时框架需要使用数据库,如果你用的是mssql 就不要单独引数据库的包了,否则需要单独添加,比如dotnet add package Hangfire.Pro.Redis;

④在ConfigureServices中添加数据库引擎

publicvoidConfigureServices(IServiceCollection services)

        {

            services.AddHangfire(r =>r.UseSqlServerStorage(@"Server=(localdb)\MSSQLLocalDB; Database=HangFire; Trusted\_Connection=True;"));

            services.AddMvc();

        }

⑤然后在Configure启动服务 启动框架 添加定时任务

即添加

app.UseHangfireServer();

app.UseHangfireDashboard();

RecurringJob.AddOrUpdate();

publicvoidConfigure(IApplicationBuilder app, IHostingEnvironment env)

        {

            if (env.IsDevelopment())

            {

                app.UseDeveloperExceptionPage();

            }

            else

            {

                app.UseExceptionHandler("/Home/Error");

            }

            app.UseHangfireServer();

            app.UseHangfireDashboard();

            //定时任务

            RecurringJob.AddOrUpdate(() =>newCommon.Weather(), Cron.Daily);

            app.UseStaticFiles();

            app.UseMvc(routes =>;

            {

                routes.MapRoute(

                    name: "default",

                    template: "{controller=Home}/{action=Index}/{id?}");

            });

        }
注释:

Common是我的一个工具类,Weather是我需要定时执行的方法;

Cron.Daily表是每天执行一次;

另外定时任务执行方式有很多种,添加、延迟、重复等等 Cron表达式也多种多样

任务执行方式: http://docs.hangfire.io/en/latest/quick-start.html

Cron表达式: https://en.wikipedia.org/wiki/Cron#CRON_expression

如果用vs code的话在调试之前千万不要执行 dotnet restore或dotnet build

DotNetCore 定时服务 HangFire的更多相关文章

  1. VS2015 C#.net4.6 windows的定时服务

    1.创建项目 C#->经典桌面->windows服务 2.创建定时服务 找到服务1,自动生成了 OnStart(服务开启时运行),OnStop(服务关闭时运行)两个函数,我们需要在开启时新 ...

  2. LBPL--基于Asp.net、 quartz.net 快速开发定时服务的插件化项目

    LBPL 这一个基于Asp.net. quartz.net 快速开发定时服务的插件化项目 由于在实际项目开发中需要做定时服务的操作,大体上可以理解为:需要动态化监控定时任务的调度系统. 为了实现快速开 ...

  3. C# windows定时服务+服务邮箱发送

    protected override void OnStart(string[] args) { timer1 = new System.Timers.Timer(); // timer1 = new ...

  4. Spring MVC定时服务

    spring-mvc-config.xml <context:component-scan base-package="com.bf" ></context:co ...

  5. Spring定时服务QuartZ

    在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等. 我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作, ...

  6. webscheduler 开源定时服务和延迟服务

    源码地址:https://gitee.com/eabeat/webscheduler 架构上采用 asp.net + access ,实现简单的管理界面,可以维护调用API,查看日志等功能.内核采用Q ...

  7. WebAPI项目添加定时服务

    开发平台: VS2019 背景: 在开发小程序的API服务的时候,由于access_token的有效期为7200秒,也就是2小时,这就需要后端定时的去更新这个access_token,便于调用小程序的 ...

  8. Python循环定时服务功能(相似contrab)

    Python实现的循环定时服务功能.类似于Linux下的contrab功能.主要通过定时器实现. 注:Python中的threading.timer是基于线程实现的.每次定时事件产生时.回调完响应函数 ...

  9. 【OF框架】使用OF.WinService项目,添加定时服务,进行创建启动停止删除服务操作

    准备 使用框架搭建完成项目,包含OF.WinService项目. 了解Window Service 和定时服务相关知识. 一.添加一个定时服务 第一步:了解项目结构 第二步:创建一个新的Job 第三步 ...

随机推荐

  1. 测试BUG记录模板(供参考)

    文档说明如下: Bug严重程度: A-崩溃的:由于程序所引起的死机.非法退出.死循环:数据库发生死锁:因错误操作导致的程序中断:主要功能错误:造成数据破坏丢失或数据异常:数据库连接错误:数据通讯错误. ...

  2. JS函数的参数声明中用 var 与不用 var的区别

    1.var 声明的变量,作用域是当前 function 2.没有声明的变量,直接赋值的话, 会自动创建变量,但作用域是全局的. 例如: function doSth() { a = "AAA ...

  3. 又趟一个坑,IO卡信号DI和DO的信号类型

    工控IO卡可以感应到各种电信号,传感器的状态变化. DI信号包括数字开关信号(ture,false\0,1),光信号的变化(上升沿,下降沿). DO信号包括脉宽和数字开关信号(ture,false\0 ...

  4. Linux sftp 另外一台机器时,出现:receive message is too long

    因为在linux登录时,首先会运行的三个文件是: /etc/profile,/home/用户名/.bashrc,其次是/home/用户名/.bash_profile,出现这个问题的原因是因为在sftp ...

  5. CSS属性:定位属性(图文详解)

    本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. CSS的定位属性有三种,分别是绝对定位.相对定位.固定定位. posit ...

  6. 什么时候可以用delete替代delete[]

    针对gcc编译器 C++内存分配和释放函数 //分配单个对象 operator new(std::size_t size) //分配数组对象 operator new[](std::size_t si ...

  7. 名片管理系统v1.1(main)

    # version: 1.1# author: Mark import cords_tools while True: # 显示界面    cords_tools.show_cords() cords ...

  8. Maven02——回顾、整合ssh框架、分模块开发、私服

    1 回顾 1.1 Maven的好处 节省空间 对jar包做了统一管理 依赖管理 一键构建 可跨平台 应用在大型项目可提高开发效率 1.2 Maven安装部署配置 1.3 Maven的仓库 本地仓库 远 ...

  9. 关于java解析xml文件出现的问题

    DOM解析xml文件 问题1:导入javax.xml.parsers.DocumentBuilderFactory出现问题,如图: 解决办法是:由于创建工程时有个默认的jre,重新创建工程改掉就解决了 ...

  10. 一种数据与逻辑分离的Python单元测试工具

    一种数据与逻辑分离的Python单元测试工具 几个概念 TestCase TestCase是一个完整的测试单元,最小的测试执行实体,就是我们常说的测试用例. TestSuite 以某种特性将测试用例组 ...