Hangfire在.net core WebAPI中的简单应用
-
安装Hangfire
-
在visual studio中 工具 >> Nuget包管理器 >> 程序包管理控制器 打开nuget控制台
-
输入
Insatll-Package Hangfire
安装HangFire,等待安装完成结果如下图:
-
-
注册及配置Hangfire(使用Sql Server)
-
在 appsettings.json 文件中添加数据库连接字符串配置
(```)
"ConnectionStrings": { "defaultDB": "Server=.;Database=ApiDataBase;uid=sa;pwd=svse;MultipleActiveResultSets=true" }
(```)
-
在 Startup.cs 文件中的 ConfigureServices 方法中写入代码
(```)
// 为Hangfire使用数据库连接 services.AddHangfire(configuration => configuration.UseSqlServerStorage(Configuration.GetConnectionString("defaultDB"))); // 注册Hangfire服务 services.AddHangfireServer();
(```)
同时在 Configure 方法中写入代码
(```)
// 为Hangfire使用数据库连接 services.AddHangfire(configuration => configuration.UseSqlServerStorage(Configuration.GetConnectionString("defaultDB"))); // 注册Hangfire服务 services.AddHangfireServer();
(```)
-
-
查看Hangfire管理视图
-
运行项目,然后在项目地址后面加上 hangfire 即可查看Hangfire管理视图
例:项目地址是: https://localhost:44323/weatherforecast ,输入 https://localhost:44323/hangfire即可访问
-
-
调度代码应用
-
支持基于队列的任务处理:任务执行不是同步的,而是放到一个持久化队列中,以便马上把请求控制权返回给调用者。
var jobId = BackgroundJob.Enqueue(() => function());
-
延迟执行任务,不是马上调用方法,而是设定一个未来的时间来执行,延迟作业仅执行一次
var jobId = BackgroundJob .Schedule(()=> function(),TimeSpan .FromDays(1));
//这里设置的是一天后执行 -
循环执行,一行代码添加重复执行的任务,其内置了常见的时间循环模式,也可基于CRON表达式来设定复杂的模式。
RecurringJob.AddOrUpdate(() => function(), Cron.Minutely);//最小单位是分钟,即最低仅可按照一分钟一次执行
-
延续性任务执行,可以在第一个任务执行完之后紧接着再次执行另外的任务,指定在某一个任务完成后立即执行你想执行的任务
BackgroundJob.ContinueWith(jobId, () => function());
-
-
部署
数据库创建
按照appsettings.json文件中配置的数据库名称建立数据库
打开sqlserver >> 点击新建查询,然后执行下面代码即可(数据库名需和
appsettings.json
配置文件中的一致)create database 数据库名 go
.net core webapi部署到iis
- 安装.net core runtime,下载地址: https://dotnet.microsoft.com/download
- 点击WebApi项目右键->发布,选择IIS为发布目标,点击发布;
- 选择文件系统,指定发布路径 ,选择release配置,框架对应项目使用框架,然后保存确定
- 打开IIS服务器,添加网站,物理路径选择发布的路径,配置端口号为你想要的端口,确定。
- 打开应用程序池,选择对应的同名应用程序池->右键->基本设置->.NET CLR 版本选择无托管代码,确定。然后回到网站列表,重启下网站。
- 在浏览器*问对应端口号,即可。
.net core webpai部署到windows service上
-
先添加nuget包,在nuget程序包管理控制器中执行代码
install-packAge Microsoft.Extensions.Hosting.WindowsServices
, 需要在项目代码中 Program.cs 文件的 CreateHostBuilder 方法中添加UseWindowsService()
-
在项目中重新发布,将整个发布文件拷贝至服务器
-
安装.net core runtime,下载地址: https://dotnet.microsoft.com/download (若已安装请忽略)
-
在C:\Windows\System32文件夹中找到cmd.exe,以管理员身份运行
-
执行命令
sc.exe create 服务名称 binPath= 项目地址
,(注意:此处binPath=后面需要加上一个空格,否则服务将创建失败) -
执行命令
sc.exe start 服务名称
启动服务,然后即可通过http://localhost:5000/
访问你的webpai