最近在写一个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. Fiddler中如何过滤会话、查询会话、保存回话、对比会话

    1.Fiddler中如何过滤会话 在抓包时,会捕捉到很多的会话,但是我们只关心特定的接口会话,这个时候我们可以使用过滤功能,来帮助我们从一大堆会话中筛选去我们关心的会话 (1)勾选过滤器选项Filte ...

  2. jQuery的get()post()getJson()方法

    jQuery get() 和 post() 方法用于通过 HTTP GET 或 POST 请求从服务器请求数据. HTTP 请求:GET vs. POST 两种在客户端和服务器端进行请求-响应的常用方 ...

  3. 关于javascript代码优化的8点建议

    前面的话 本文将详细介绍JS编程风格的几个要点 松耦合 当修改一个组件而不需要更改其他组件时,就做到了松耦合 1.将JS从CSS中抽离:不要使用CSS表达式 //不好的做法 .box{width: e ...

  4. wx.createSelectorQuery()的方法讨论

    在之前的<小程序节点查询方法:wx.createSelectorQuery()的使用场景与注意事项>中,讨论了节点查询方法. 最近在wx.createSelectorQuery()实际使用 ...

  5. Fineui js getText

    需要自己写js的时候.需要取值. var ddlgenderid='<%=ddlgender.clientID%>';function reader(value){f(ddlgenderi ...

  6. Django源码分析之程序执行入口分析

    一般我们开启一个django项目,最简单的方法是进入project 目录,这时目录结构是这样的 然后我们执行python manage.py runserver,程序就开始执行了. 那django是如 ...

  7. css样式中如何设置中文字体?

    代码如下: .selector{ font-family: SimHei,"微软雅黑",sans-serif; }  注意:加上中文名“微软雅黑”是为了兼容opera浏览器,中文字 ...

  8. junit测试模板 unit-test

    一个项目能否发布上线,重要的环节就是测试.经过集成测试.性能测试.压力测试等不断循环的测试过后依据测试报告来确定上线.这些由专业的测试人员来完成,因此会导致程序开发者对自身的单元测试的弱化.若在代码中 ...

  9. CSS的box-sizing属性

    box-sizing属性可以为三个值之一:content-box(default),border-box,padding-box. content-box,border和padding不计算入widt ...

  10. AIM Tech Round 4 (Div. 2)(A,暴力,B,组合数,C,STL+排序)

    A. Diversity time limit per test:1 second memory limit per test:256 megabytes input:standard input o ...