nuget搜索:Hangfire

安装即可,这里我选择的是 1.7.0-beta1 版本

我是用这个集成到了 mvc api里

这里需要在 Startup 文件里进行如下配置

在配置方法 ConfigureServices 里配置数据库,这是用的是sqlserver数据库初始化

            var hangfireConnStr = _configuration["AppSettings:HangfireConnectionString"];
services.AddHangfire(configuration => configuration.UseSqlServerStorage(hangfireConnStr));

如果数据库是mysql,使用下面语句初始化,需要引用 Hangfire.MySql

            var hangfireMysqlConnStr = _configuration["AppSettings:HangfireMysqlConnectionString"];
services.AddHangfire(configuration => configuration.UseStorage(
new MySqlStorage(
hangfireMysqlConnStr,
new MySqlStorageOptions
{
TransactionIsolationLevel = IsolationLevel.ReadCommitted,
QueuePollInterval = TimeSpan.FromSeconds(),
JobExpirationCheckInterval = TimeSpan.FromHours(),
CountersAggregateInterval = TimeSpan.FromMinutes(),
PrepareSchemaIfNecessary = true,
DashboardJobListLimit = ,
TransactionTimeout = TimeSpan.FromMinutes(),
TablesPrefix = ""
})));

在配置方法 Configure 里需要配置下管理员后台

            app.UseHangfireServer();
app.UseHangfireDashboard();

这样我们就可以通过后台操作管理作业了

地址如下

https://localhost:5001/hangfire

这里可以看到正在跑的作业和执行情况

不过这个后台只能在服务器本机上访问,为了保证安全,无法通过域名访问操作

添加调用代码很简单,在每次系统启动的时候,配置如下,如果没有添加;有了就更新

RecurringJob.AddOrUpdate(() => UpdateMerchIndex(), Cron.MinuteInterval());

这里是指每隔三分钟调用一次 UpdateMerchIndex() 方法。

是不是很简单呢

数据库需要初始化几个表

这里附送数据库初始化建表SQL语句

sqlserver

USE [GEDU_Hangfire]
GO
/****** Object: Table [HangFire].[Job] Script Date: 01/22/2019 14:16:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [HangFire].[Job](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[StateId] [bigint] NULL,
[StateName] [nvarchar](20) NULL,
[InvocationData] [nvarchar](max) NOT NULL,
[Arguments] [nvarchar](max) NOT NULL,
[CreatedAt] [datetime] NOT NULL,
[ExpireAt] [datetime] NULL,
CONSTRAINT [PK_HangFire_Job] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [HangFire].[Hash] Script Date: 01/22/2019 14:16:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [HangFire].[Hash](
[Key] [nvarchar](100) NOT NULL,
[Field] [nvarchar](100) NOT NULL,
[Value] [nvarchar](max) NULL,
[ExpireAt] [datetime2](7) NULL,
CONSTRAINT [PK_HangFire_Hash] PRIMARY KEY CLUSTERED
(
[Key] ASC,
[Field] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [HangFire].[Counter] Script Date: 01/22/2019 14:16:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [HangFire].[Counter](
[Key] [nvarchar](100) NOT NULL,
[Value] [int] NOT NULL,
[ExpireAt] [datetime] NULL
) ON [PRIMARY]
GO
/****** Object: Table [HangFire].[AggregatedCounter] Script Date: 01/22/2019 14:16:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [HangFire].[AggregatedCounter](
[Key] [nvarchar](100) NOT NULL,
[Value] [bigint] NOT NULL,
[ExpireAt] [datetime] NULL,
CONSTRAINT [PK_HangFire_CounterAggregated] PRIMARY KEY CLUSTERED
(
[Key] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [HangFire].[Set] Script Date: 01/22/2019 14:16:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [HangFire].[Set](
[Key] [nvarchar](100) NOT NULL,
[Score] [float] NOT NULL,
[Value] [nvarchar](256) NOT NULL,
[ExpireAt] [datetime] NULL,
CONSTRAINT [PK_HangFire_Set] PRIMARY KEY CLUSTERED
(
[Key] ASC,
[Value] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [HangFire].[Server] Script Date: 01/22/2019 14:16:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [HangFire].[Server](
[Id] [nvarchar](100) NOT NULL,
[Data] [nvarchar](max) NULL,
[LastHeartbeat] [datetime] NOT NULL,
CONSTRAINT [PK_HangFire_Server] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [HangFire].[Schema] Script Date: 01/22/2019 14:16:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [HangFire].[Schema](
[Version] [int] NOT NULL,
CONSTRAINT [PK_HangFire_Schema] PRIMARY KEY CLUSTERED
(
[Version] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [HangFire].[List] Script Date: 01/22/2019 14:16:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [HangFire].[List](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[Key] [nvarchar](100) NOT NULL,
[Value] [nvarchar](max) NULL,
[ExpireAt] [datetime] NULL,
CONSTRAINT [PK_HangFire_List] PRIMARY KEY CLUSTERED
(
[Key] ASC,
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [HangFire].[JobQueue] Script Date: 01/22/2019 14:16:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [HangFire].[JobQueue](
[Id] [int] IDENTITY(1,1) NOT NULL,
[JobId] [bigint] NOT NULL,
[Queue] [nvarchar](50) NOT NULL,
[FetchedAt] [datetime] NULL,
CONSTRAINT [PK_HangFire_JobQueue] PRIMARY KEY CLUSTERED
(
[Queue] ASC,
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [HangFire].[State] Script Date: 01/22/2019 14:16:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [HangFire].[State](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[JobId] [bigint] NOT NULL,
[Name] [nvarchar](20) NOT NULL,
[Reason] [nvarchar](100) NULL,
[CreatedAt] [datetime] NOT NULL,
[Data] [nvarchar](max) NULL,
CONSTRAINT [PK_HangFire_State] PRIMARY KEY CLUSTERED
(
[JobId] ASC,
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [HangFire].[JobParameter] Script Date: 01/22/2019 14:16:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [HangFire].[JobParameter](
[JobId] [bigint] NOT NULL,
[Name] [nvarchar](40) NOT NULL,
[Value] [nvarchar](max) NULL,
CONSTRAINT [PK_HangFire_JobParameter] PRIMARY KEY CLUSTERED
(
[JobId] ASC,
[Name] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: ForeignKey [FK_HangFire_JobParameter_Job] Script Date: 01/22/2019 14:16:29 ******/
ALTER TABLE [HangFire].[JobParameter] WITH CHECK ADD CONSTRAINT [FK_HangFire_JobParameter_Job] FOREIGN KEY([JobId])
REFERENCES [HangFire].[Job] ([Id])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [HangFire].[JobParameter] CHECK CONSTRAINT [FK_HangFire_JobParameter_Job]
GO
/****** Object: ForeignKey [FK_HangFire_State_Job] Script Date: 01/22/2019 14:16:29 ******/
ALTER TABLE [HangFire].[State] WITH CHECK ADD CONSTRAINT [FK_HangFire_State_Job] FOREIGN KEY([JobId])
REFERENCES [HangFire].[Job] ([Id])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [HangFire].[State] CHECK CONSTRAINT [FK_HangFire_State_Job]
GO

mysql

/*
Navicat Premium Data Transfer Source Server : mysql47.93.198.115
Source Server Type : MySQL
Source Server Version : 50562
Source Host : 47.93.198.115:3306
Source Schema : gedu_hangfire Target Server Type : MySQL
Target Server Version : 50562
File Encoding : 65001 Date: 22/01/2019 14:17:37
*/ SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0; -- ----------------------------
-- Table structure for aggregatedcounter
-- ----------------------------
DROP TABLE IF EXISTS `aggregatedcounter`;
CREATE TABLE `aggregatedcounter` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Key` varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`Value` int(11) NOT NULL,
`ExpireAt` datetime NULL DEFAULT NULL,
PRIMARY KEY (`Id`) USING BTREE,
UNIQUE INDEX `IX_CounterAggregated_Key`(`Key`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3482 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact; -- ----------------------------
-- Table structure for counter
-- ----------------------------
DROP TABLE IF EXISTS `counter`;
CREATE TABLE `counter` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Key` varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`Value` int(11) NOT NULL,
`ExpireAt` datetime NULL DEFAULT NULL,
PRIMARY KEY (`Id`) USING BTREE,
INDEX `IX_Counter_Key`(`Key`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 17107 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact; -- ----------------------------
-- Table structure for distributedlock
-- ----------------------------
DROP TABLE IF EXISTS `distributedlock`;
CREATE TABLE `distributedlock` (
`Resource` varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`CreatedAt` datetime NOT NULL
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact; -- ----------------------------
-- Table structure for hash
-- ----------------------------
DROP TABLE IF EXISTS `hash`;
CREATE TABLE `hash` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Key` varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`Field` varchar(40) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`Value` longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL,
`ExpireAt` datetime NULL DEFAULT NULL,
PRIMARY KEY (`Id`) USING BTREE,
UNIQUE INDEX `IX_Hash_Key_Field`(`Key`, `Field`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 29028 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact; -- ----------------------------
-- Table structure for job
-- ----------------------------
DROP TABLE IF EXISTS `job`;
CREATE TABLE `job` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`StateId` int(11) NULL DEFAULT NULL,
`StateName` varchar(20) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
`InvocationData` longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`Arguments` longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`CreatedAt` datetime NOT NULL,
`ExpireAt` datetime NULL DEFAULT NULL,
PRIMARY KEY (`Id`) USING BTREE,
INDEX `IX_Job_StateName`(`StateName`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5703 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact; -- ----------------------------
-- Table structure for jobparameter
-- ----------------------------
DROP TABLE IF EXISTS `jobparameter`;
CREATE TABLE `jobparameter` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`JobId` int(11) NOT NULL,
`Name` varchar(40) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`Value` longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL,
PRIMARY KEY (`Id`) USING BTREE,
UNIQUE INDEX `IX_JobParameter_JobId_Name`(`JobId`, `Name`) USING BTREE,
INDEX `FK_JobParameter_Job`(`JobId`) USING BTREE,
CONSTRAINT `FK_JobParameter_Job` FOREIGN KEY (`JobId`) REFERENCES `job` (`Id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 17107 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact; -- ----------------------------
-- Table structure for jobqueue
-- ----------------------------
DROP TABLE IF EXISTS `jobqueue`;
CREATE TABLE `jobqueue` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`JobId` int(11) NOT NULL,
`Queue` varchar(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`FetchedAt` datetime NULL DEFAULT NULL,
`FetchToken` varchar(36) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
PRIMARY KEY (`Id`) USING BTREE,
INDEX `IX_JobQueue_QueueAndFetchedAt`(`Queue`, `FetchedAt`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5703 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact; -- ----------------------------
-- Table structure for jobstate
-- ----------------------------
DROP TABLE IF EXISTS `jobstate`;
CREATE TABLE `jobstate` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`JobId` int(11) NOT NULL,
`Name` varchar(20) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`Reason` varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
`CreatedAt` datetime NOT NULL,
`Data` longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL,
PRIMARY KEY (`Id`) USING BTREE,
INDEX `FK_JobState_Job`(`JobId`) USING BTREE,
CONSTRAINT `FK_JobState_Job` FOREIGN KEY (`JobId`) REFERENCES `job` (`Id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact; -- ----------------------------
-- Table structure for list
-- ----------------------------
DROP TABLE IF EXISTS `list`;
CREATE TABLE `list` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Key` varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`Value` longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL,
`ExpireAt` datetime NULL DEFAULT NULL,
PRIMARY KEY (`Id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact; -- ----------------------------
-- Table structure for server
-- ----------------------------
DROP TABLE IF EXISTS `server`;
CREATE TABLE `server` (
`Id` varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`Data` longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`LastHeartbeat` datetime NULL DEFAULT NULL,
PRIMARY KEY (`Id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact; -- ----------------------------
-- Table structure for set
-- ----------------------------
DROP TABLE IF EXISTS `set`;
CREATE TABLE `set` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Key` varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`Value` varchar(256) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`Score` float NOT NULL,
`ExpireAt` datetime NULL DEFAULT NULL,
PRIMARY KEY (`Id`) USING BTREE,
UNIQUE INDEX `IX_Set_Key_Value`(`Key`, `Value`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 95 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact; -- ----------------------------
-- Table structure for state
-- ----------------------------
DROP TABLE IF EXISTS `state`;
CREATE TABLE `state` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`JobId` int(11) NOT NULL,
`Name` varchar(20) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`Reason` varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
`CreatedAt` datetime NOT NULL,
`Data` longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL,
PRIMARY KEY (`Id`) USING BTREE,
INDEX `FK_HangFire_State_Job`(`JobId`) USING BTREE,
CONSTRAINT `FK_HangFire_State_Job` FOREIGN KEY (`JobId`) REFERENCES `job` (`Id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 17108 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact; SET FOREIGN_KEY_CHECKS = 1;

redis配置(Startup.cs 文件里的 ConfigureServices)

            //注入Hangfire服务 redis
var hangfireRedisConnStr = Configuration["AppSettings:HangfireRedisConnectionString"];
_redis = ConnectionMultiplexer.Connect(hangfireRedisConnStr);
var prefix = Configuration["AppSettings:HangfireRedisPrefixName"];
var option = new RedisStorageOptions
{
Prefix = prefix,
Db = ,
};
if (int.TryParse(Configuration["AppSettings:HangfireRedisDefaultDatabse"], out int dfaultdb))
{
if (dfaultdb >= && dfaultdb <= )
{
option.Db = dfaultdb;
}
}
services.AddHangfire(config => config.UseRedisStorage(_redis, option));

配置文件

{
"Logging": {
"IncludeScopes": false,
"Debug": {
"LogLevel": {
"Default": "Warning"
}
},
"Console": {
"LogLevel": {
"Default": "Warning"
}
}
},
"AppSettings": {
"HangfireRedisConnectionString": "127.0.0.1:6379,password=,defaultDatabase=1,ssl=false,writeBuffer=10240",
"HangfireRedisPrefixName": "{hangfire_muniumini}:",
"HangfireRedisDefaultDatabse": "",
"RedisConnectionString": "127.0.0.1:6379,password=,defaultDatabase=1,poolsize=50,ssl=false,writeBuffer=10240",
"UseSwagger": "true"
},
"AllowedHosts": "*"
}

其中AppSetting里的配置说明

HangfireRedisConnectionString(连接字符串,格式参考上面的配置文件)

HangfireRedisPrefixName(redis的字典集名称)

HangfireRedisDefaultDatabse(redis默认数据库序号)

搞定

【netcore基础】.Net core自动作业之Hangfire的更多相关文章

  1. 循序渐进学.Net Core Web Api开发系列【17】:.Net core自动作业之Hangfire

    nuget搜索:Hangfire 安装即可,这里我选择的是 1.7.0-beta1 版本 我是用这个集成到了 mvc api里 这里需要在 Startup 文件里进行如下配置 在配置方法 Config ...

  2. 【netcore基础】CentOS 7.6.1810 搭建.net core 2.1 linux 运行环境 nginx反向代理 supervisor配置自启动

    之前写过一篇Ubuntu的环境搭建博客,感觉一些配置大同小异,这里重点记录下 nginx 作为静态 angular 项目文件服务器的配置 参考链接 [netcore基础]ubuntu 16.04 搭建 ...

  3. 【netcore基础】.Net core通过 Lucene.Net 和 jieba.NET 处理分词搜索功能

    业务要求是对商品标题可以进行模糊搜索 例如用户输入了[我想查询下雅思托福考试],这里我们需要先将这句话分词成[查询][雅思][托福][考试],然后搜索包含相关词汇的商品. 思路如下 首先我们需要把数据 ...

  4. 采用异步来实现重新连接服务器或者重新启动服务 C#中类的属性的获取 SignalR2简易数据看板演示 C#动态调用泛型类、泛型方法 asp .net core Get raw request. 从壹开始前后端分离[.NetCore 不定期更新] 38 ║自动初始化数据库

    采用异步来实现重新连接服务器或者重新启动服务 开启异步监听,不会导致主线程的堵塞,在服务异常断开后一直检测重新连接服务,成功连接服务后通知各个注册的客户端! #region 检测断线并重连OPC服务 ...

  5. Python3 与 C# 面向对象之~继承与多态 Python3 与 C# 面向对象之~封装 Python3 与 NetCore 基础语法对比(Function专栏) [C#]C#时间日期操作 [C#]C#中字符串的操作 [ASP.NET]NTKO插件使用常见问题 我对C#的认知。

    Python3 与 C# 面向对象之-继承与多态   文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html 目录: 2.继承 ¶ 2.1.单继 ...

  6. 动画基础--基于Core Animation(3)

    参考:https://zsisme.gitbooks.io/ios-/content/ 前面的文章动画基础--基于Core Animation(1),动画基础--基于Core Animation(2) ...

  7. .netCore+Vue 搭建的简捷开发框架 (4)--NetCore 基础 -2

    上节中,我们初步的介绍了一下NetCore的一些基础知识,为了控制篇幅(其实也是因为偷懒),我将NetCore 基础分为两部分来写. 0.WebAPI 项目的建立 1..NetCore 项目执行(加载 ...

  8. Core开发-后台任务利器Hangfire使用

    Core开发-后台任务利器Hangfire使用 ASP.NET Core开发系列之后台任务利器Hangfire 使用. Hangfire 是一款强大的.NET开源后台任务利器,无需Windows服务/ ...

  9. python基础一之课后作业:编写登录接口

    1 # Author : Mamba 2 3 #python基础一之课后作业:编写登录接口 4 5 # 输入用户名密码 6 # 认证成功后显示欢迎信息 7 # 用户名3次输入错误后,退出程序 8 # ...

随机推荐

  1. Java并发(理论知识)—— 线程安全性

    1.什么是线程安全性                                                                                      当多个线 ...

  2. 洛谷 P1016 旅行家的预算

    P1016 旅行家的预算 题目OJ链接https://www.luogu.org/problemnew/show/P1016 题目描述一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时 ...

  3. 计算N个点和M个点之间的距离

    KNN中,训练样本有train_count个,测试样本有test_count个,每个样本有attr_count个属性.现在需要快速计算test_count个测试样本和train_count个样本之间的 ...

  4. DxO FilmPack for Mac(胶片模拟效果软件)破解版安装

    1.软件简介    DxO FilmPack 是 macOS 系统上由知名的 DxO Labs 出品的一套胶片模拟效果滤镜,拥有数十种电影风格的滤镜,今天和大家分享最新的版本,支持最新的 PhotoS ...

  5. SNF开发平台-SNF.CodeGenerator-升级生成BS页面代码-支持视图-数据库配置-快速开发者的利器

    有一段时间没有进行总结SNF快速开发平台了,这段时间把今年在框架升级部分进行整理说明. 下面就把代码生成器升级部分介绍一下: 1.新增BS页面生成代码 2.新增视图支持 3.新增 数据库配置 1.新增 ...

  6. Django TemplateDoesNotExist

    在联系Django的时候,启动正常,我在浏览器上输入URL地址后报错 TemplateDoesNotExist at /test/ 解决方案 默认这里是空的,这里我们填上我们静态文件的地址

  7. 设置Nginx以列表方式显示网站内容

    服务器目录内容: 访问该页面时,将所有文件和目录按列表方式显示 nginx配置文件

  8. Atitit 常见每日流程日程日常工作.docx v4

    Atitit 常见每日流程日程日常工作.docx v4 ----早晨 签到 晨会,每天或者隔天 每日计划( )项目计划,日常计划等. mailbox读取检查 每日趋势 推库 -----下午 签退 每日 ...

  9. MYSQL 线程池

    https://www.jianshu.com/p/88e606eca2a5 https://www.percona.com/doc/percona-server/LATEST/performance ...

  10. pythn os

    获取文件所在路径 import os os.path.dirname(__file__)  获取当前文件的所在路径 print (os.path.dirname(os.path.dirname(__f ...