.NET6中配置Hangfire定时任务

1.安装Nuget包

  Hangfire.Core

  Hangfire.SqlServer                           --sqlserver数据库

    SqlServer需要配置其中一个包

    Microsoft.Data.SqlClient 

    system.data.sqlclient             

  Hangfire.AspNetCore                      --AspNetCore支持
  Hangfire.Dashboard.BasicAuthorization              --可视化+权限控制
  Hangfire.HttpJob                        --httpJob
 

2.创建SqlServer数据库

  CREATE DATABASE HangFireText

3.appsettings.json配置连接字符串

  "ConnectionStrings": { "Hangfire": "Data Source=.;Initial Catalog=HangFireText;Integrated Security=True;Encrypt=false" }
  其中 Encrypt=false 解决 证书链是由不受信任的颁发机构颁发的 问题
 

4.Program.cs

 

using Hangfire;
using Hangfire.HttpJob;
using Hangfire.AspNetCore;
using Hangfire.SqlServer;
using Hangfire.Dashboard.BasicAuthorization;

 

var Config = builder.Configuration;

 

builder.Services.AddHangfire(config => config
  .SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
  .UseSimpleAssemblyNameTypeSerializer()
  .UseRecommendedSerializerSettings()
  .UseStorage(new SqlServerStorage(
  Config["ConnectionStrings:Hangfire"],
    new SqlServerStorageOptions
    {
      CommandBatchMaxTimeout = TimeSpan.FromMinutes(5),
      SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5),
      QueuePollInterval = TimeSpan.FromSeconds(15),
      UseRecommendedIsolationLevel = true,
      UsePageLocksOnDequeue = true,
      DisableGlobalLocks = true
    })).UseHangfireHttpJob());

 

// Add the processing server as IHostedService
builder.Services.AddHangfireServer();

 

 

app.UseHangfireDashboard("/hangfire", new DashboardOptions
{

  Authorization = new[] {new BasicAuthAuthorizationFilter(new BasicAuthAuthorizationFilterOptions
  {

    RequireSsl = false,
    SslRedirect = false,
    LoginCaseSensitive = true,
    Users = new []
    {
      new BasicAuthAuthorizationUser
      {
        Login = "admin",
        PasswordClear = "admin"
      }
    }

  })}

});

 

app.UseRouting();

 

app.UseEndpoints(endpoints =>
{

  endpoints.MapGet("/", async context =>
  {
    await context.Response.WriteAsync("Hello World!");
  });

});

 

posted @   成为码农的开始  阅读(458)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示