zoukankan      html  css  js  c++  java
  • DotNetCore 定时服务 HangFire

    最近在写一个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

  • 相关阅读:
    shell 命令
    unzip解压失败 添加tar 解压
    tomcat
    Linux常用命令
    压缩归档与解压
    Linux的任务计划管理
    A01. openstack架构实战-openstack基本环境准备
    ubuntu16.04 server版破解密码
    Ubuntu Server 18.04 网络设置不生效的解决
    带宽单位 Mbps 及换算方式
  • 原文地址:https://www.cnblogs.com/hoyu/p/8378305.html
Copyright © 2011-2022 走看看