首页 > 其他分享 >Net Core环境搭建Hangfire项目

Net Core环境搭建Hangfire项目

时间:2023-06-10 12:44:16浏览次数:40  
标签:Core 自定义 Hangfire hangfire new Net 面板 方法

添加相关代码配置。
1.因hangfire的任务需要数据库持久化,我们在Startup类中修改ConfigureServices,简单配置如下:

var connection =  Configuration["ConnectionsStrings"];    //数据库链接配置
services.AddHangfire(x => x.UseSqlServerStorage(connection));

如果需要配置详细信息,则配置如下:

  //hangfire的任务需要数据库持久化
            //Hangfire.AspNetCore
            //Hangfire.MySql.Core  mysql引用 大小写敏感
            //Hangfire.SqlServer   sqlserver引用 大小写敏感

            //hangfire必须需要绑定一个持久化的连接数据。 官方推荐的是sqlserver,还有mg,mssql,pgsql,redis都是个人封装的
            //连接字符串必须加 Allow User Variables=true
            services.AddHangfire(x => x.UseStorage(new SqlServerStorage(
                Configuration["ConnectionString"],
                new SqlServerStorageOptions
                {
                    TransactionIsolationLevel = IsolationLevel.ReadCommitted, // 事务隔离级别。默认是读取已提交。
                    QueuePollInterval = TimeSpan.FromSeconds(15),             //- 作业队列轮询间隔。默认值为15秒。
                    JobExpirationCheckInterval = TimeSpan.FromHours(1),       //- 作业到期检查间隔(管理过期记录)。默认值为1小时。
                    CountersAggregateInterval = TimeSpan.FromMinutes(5),      //- 聚合计数器的间隔。默认为5分钟。
                    PrepareSchemaIfNecessary = true,                          //- 如果设置为true,则创建数据库表。默认是true。
                    DashboardJobListLimit = 50000,                            //- 仪表板作业列表限制。默认值为50000。
                    TransactionTimeout = TimeSpan.FromMinutes(1),             //- 交易超时。默认为1分钟。
                }
                )));

以上为SqlServer相关配置,MySql类型,区别为相关名称修改为MySql,如:SqlServerStorage→MySqlStorage,
SqlServerStorageOptions→MySqlStorageOptions

2.自定义配置hangfire面板 (在Startup.cs 的Configure)

简单引用如下:

 app.UseHangfireDashboard();   //使用hangfire面板
 app.UseHangfireServer();      //启动hangfire服务

若需要配置其详细信息,则配置如下:
原生的面板如果不指定路径。默认的进入面板的地址是 (端口号:/hangfire),支持自定义进入hangfire的路径
Hangfire.Dashboard.Authorization 包的自定义方法 (方法1):

 
            //添加面板的打开权限。不是所有人都可以打开面板。可以操作后台任务。
            app.UseHangfireDashboard("", new DashboardOptions
            {
               //方法1
               Authorization = new[]
               {
                 new BasicAuthAuthorizationFilter(new BasicAuthAuthorizationFilterOptions
                 {
                    SslRedirect = false,          // 是否将所有非SSL请求重定向到SSL URL
                    RequireSsl = false,           // 需要SSL连接才能访问HangFire Dahsboard。强烈建议在使用基本身份验证时使用SSL
                    LoginCaseSensitive = false,   //登录检查是否区分大小写
                    Users = new[]
                    {
                        new BasicAuthAuthorizationUser
                        {
                            Login ="ycz",//用户名
                            PasswordClear="123456"
                            // Password as SHA1 hash
                            //Password=new byte[]{ 0xf3,0xfa,,0xd1 }
                        }
                    }
                 })
               },
            
            });

方法2:

 
            //添加面板的打开权限。不是所有人都可以打开面板。可以操作后台任务。
            app.UseHangfireDashboard("", new DashboardOptions
            {
               //方法2
                Authorization = new[]
               {
                    new HangfireAuthorizationFilter(){}
               },
              
            });

方法2启用的自定义规则类 。需要重写 IDashboardAuthorizationFilter 的 Authorize 方法

     //默认是只能内网访问。 需要重写这个方法。注入规则
     public class HangfireAuthorizationFilter : IDashboardAuthorizationFilter
     {
 
          //这里写自定义规则
          public bool Authorize([NotNull] DashboardContext context)
          {
             if (context.Request.LocalIpAddress.Equals("127.0.0.1") || context.Request.LocalIpAddress.Equals("::1"))
                return true;
             else
                return false;
           }
     }

方法 1 是支持可视化界面的。 方法 2没有可视化界面但是开放了接口 IDashboardAuthorizationFilter 可以重写自定义规则
方法 1 和 方法 2 引用的包不一样,不可同时使用两种方法。需要注意
Hangfire.Dashboard.BasicAuthorization (方法1的包)
Hangfire.Dashboard.Authorization (方法2的包)

方法 1 和 方法 2 根据自己的需求。自行选择。
方法1 可视化界面 输入正确进入仪表盘。 输入错误会刷新界面 继续在当前登录页。
方法2 拦截器验证 通过验证直接进入仪表盘。 没通过验证返回 401

标签:Core,自定义,Hangfire,hangfire,new,Net,面板,方法
From: https://www.cnblogs.com/netcore-vue/p/17471093.html

相关文章

  • .net abp框架的好处
    ABP(ASP.NETBoilerplate)框架是一种流行的基于.NET平台的开源应用程序框架,它为开发者提供了一整套解决方案,可以帮助他们更加快速地构建高质量的分布式应用程序。ABP框架的主要好处包括:快速开发:ABP框架提供了一系列的代码生成器和基于集成测试的自动化测试工具,可以大大缩短开发......
  • 第二十九节:批量插入框架[Zack.EFCore.Batch]和EFCore7.x自带的批量删除、更新
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblogs.com/yaopengfei/声     明1:如有错误,欢迎讨论,请勿谩骂^_^。声     明2:原创博客请在转载......
  • ASP.NET实验室信息管理系统(LIMS)
    一、技术框架说明开发语言:C# 开发工具:VS2019  前端框架:EXT.NET  后端框架:asp.net  数据库:mssql2018技术架构:ASP.NETdotnet3.5 二、LIMS实验室信息管理系统主要功能1.基本资料管理:公司资料、地域/区域2.标准项目管理:标准依据、检测项目、项目价格3.客......
  • 【Kubernetes的Knative Servina、Knative Eventing 核心概念及Broker、Channel and Tr
    Knative是一个构建在Kubernetes上的平台,它提供了一些高级别的抽象,简化了构建和管理云原生应用程序的过程。其中,KnativeServing用于自动管理应用程序的版本和流量分发,让开发者只需要专注于代码编写;KnativeEventing为云原生应用程序提供了事件驱动的能力,支持事件的生产、转换和消费......
  • .NET Developer Tools - What you should (could) have in your toolbox zz
    .NETDeveloperTools-Whatyoushould(could)haveinyourtoolboxSubmittedbyDenDelimarskyonSun,2010/12/26-9:26pm//z2011-12-202:34PMis2120@ScottHanslemanhasaprettydecentlistofsoftwaretoolsthatmightbeusefulfordeveloperandregul......
  • 【C#/.NET】Dapper使用QueryMultipleAsync执行多条SQL
    ​ 目录 背景解决方案总结 背景        对于查询数据列表的功能,需要分页已经查询总数。这里涉及两句SQL,一个是查询分页对应的数据,第二个是Count(*);会导致部分重复代码和两次的数据库查询。 解决方案        Dapper有封装QueryMultipleAsync的......
  • Linux环境下配置.Net自动部署
    使用VMWorkStation安装虚拟机下载VMWorkStation安装包安装包是通过关注“柠檬工会”公众号下载的,里面资源很多。参考教程安装虚拟机安装教程地址:https://blog.csdn.net/Liqi23/article/details/126622330我忘记了root密码,所以又去找教程重置密码教程地址:https://www.jb5......
  • SC-FEGAN: Face Editing Generative Adversarial Network with User’s Sketch and Co
    SC-FEGAN:FaceEditingGenerativeAdversarialNetworkwithUser’sSketchandColorhttps://github.com/run-youngjoo/SC-FEGANhttps://arxiv.org/abs/1902.06838基于GAN的人脸编辑,效果非常好,应用点非常新颖。总的来说,效果非常好,包括很多细节都能够进行编辑。就创新点来讲,就是......
  • 基于ASP.NET轻笔记系统设计与实现
    移动互联网时代,用户接触的信息爆炸式增长,有效储存和管理信息是现阶段面临的挑战。在云计算中起基础支撑作用的云存储,可作为一种服务提供给用户,为解决现在面临的多终端跨平台个人文件存取困境提供了良好的技术基础。经过本人的综合考虑,轻笔记系统的设计是基于asp.net技术+sqlserver......
  • .NET的8种JSON序列化反序列化工具供你选择
    在.NET开发中,.NET的JSON序列化反序列化工具除了Newtonsoft.Json和System.Text.Json其实还有很多优秀的开源的序列化和反序列化工具,这些工具有的性能更加优秀,更加轻量等特征。本文将汇总介绍这些.NET中常用的JSON序列化和反序列化工具,供大家选择参考使用。1、Newtonsoft.Json(Jso......