首页 > 编程语言 >FreeScheduler 在asp.net core 中使用依赖注入的方式进行注入使用

FreeScheduler 在asp.net core 中使用依赖注入的方式进行注入使用

时间:2024-08-22 14:06:31浏览次数:10  
标签:core asp builder app serviceScopeFactory scheduler var public 注入

1. 创建 SchedulerTask.cs 类 ,代码如下

 public class SchedulerTask
 {
     private readonly ILogger<SchedulerTask> _logger;
     private readonly IServiceScopeFactory _serviceScopeFactory;public SchedulerTask(ILogger<SchedulerTask> logger, IServiceScopeFactory serviceScopeFactory)
     {
         _logger = logger;
         _serviceScopeFactory = serviceScopeFactory;
     }

     public async Task ExecuteAsync(TaskInfo task)
     {

         if (task.Topic == "test")
         {
             //调用其他服务
             using (var scope = _serviceScopeFactory.CreateScope())
             {
                 var xxx = scope.ServiceProvider.GetRequiredService<xxx>();
               
             }

         }

     }
    
 }

2.在main 函数中注入

public class Program
{
    public static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);

        builder.Services.AddControllers();
        //开始注入
        builder.Services.AddSingleton<SchedulerTask>();
        Func<IServiceProvider, Scheduler> schedulerFactory = r =>
        {
            var schedulerTask = r.GetRequiredService<SchedulerTask>();
            return new FreeSchedulerBuilder()
                .OnExecuting(task =>
                {

                     schedulerTask.ExecuteAsync(task).Wait(); //加wait 任务可以顺延
                })
                .UseTimeZone(TimeSpan.FromHours(8))
                .Build();
        };
        builder.Services.AddSingleton(schedulerFactory);
        var app = builder.Build();
        //程序启动时添加任务
        using (var scope = app.Services.CreateScope())
        {
            var scheduler = scope.ServiceProvider.GetRequiredService<Scheduler>();
            scheduler.AddTask("test", "test", -1, 3);
        }
        app.UseFreeSchedulerUI("/freescheduler/");
        app.UseAuthorization();


        app.MapControllers();

        app.Run();
    }
}

 

3. 其他地方使用

[Route("api/[controller]/[action]")]
[ApiController]
public class SchedulerController : ControllerBase
{
    private readonly Scheduler _scheduler;
    public SchedulerController(Scheduler scheduler)
    {
        _scheduler = scheduler;
    }
    [HttpGet]
    public void AddTask(string topic)
    {
        _scheduler.AddTask(topic, topic, -1, 10);
    }
}

 

标签:core,asp,builder,app,serviceScopeFactory,scheduler,var,public,注入
From: https://www.cnblogs.com/lkd3063601/p/18373707

相关文章

  • 【溯源系列】使用Wireshark分析日志文件:发现有人对网站进行了SQL注入,分析日志找到该IP
    工具Wireshark某公司安全工程师在维护网站时发现有人对网站进行了SQL注入,分析日志找到该IP地址。要点SQL.log文件主要显示具体的sql语句】access.log文件主要是记录web页面操作数据库的请求解题很简单,直接打开access.log文件,一步到位,检索sql注入的常见关键词select、un......
  • .NetCore里使用定时任务BackgroundService
    原文链接:https://blog.csdn.net/x1234w4321/article/details/140797306namespaceXCGWebApp.TimerService{///<summary>///后台定时任务///</summary>publicclassTimerBackgroundService:BackgroundService{protectedoverrid......
  • ACCESS靶场手工注入(附靶场搭建)
    下载地址:https://pan.baidu.com/s/1y6Gkvo7Wsbwj_zNbaBiCmA提取码:kjg7一、靶场搭建1、将压缩包添到wwwroot目录下2、 访问iis绑定的ip地址二、ACCESS注入1、判断注入点点击新闻中心,发现一个?id参数  输入'发现报错,输入'and1=2,发现报错,输入'and1=1,页面正......
  • ASP.NET Core 6.0 ServiceCollection 实现依赖注入
    ASP.NETCore6lOC容器控制反转(InversionofControl,IoC)是一种软件设计模式,其目的是降低代码之间的耦合度。在C#中,可以使用依赖注入(DependencyInjection,DI)来实现控制反转。一般系统分为UI层、BLL层、DAL层、IBLL层和IDAL层,IOC实质是通过抽象IBLL(接口、抽象类......
  • sqlilabs less16-20关手工注入
    第16关一.判断闭合方式闭合方式点“)admin")and1=1#二.判断数据库长度admin")andif(length(database())>7,0,sleep(5))#页面无延迟 admin")andif(length(database())>8,0,sleep(5))# 页面有延迟说明数据库长度为8三.判断数据库的第一个字符admin")and......
  • SQL手工注入漏洞测试(MongoDB数据库)
    此次靶场地址为:墨者学院⼀.如下给出的源码...可以看到数据库查询的语句如下..构造回显测试... new_list.php?id=1'});return({title:'1',content:'2⼆.成功显示“1”和“2”。可以在此来显示想要查询的数据。接下来开始尝试构造payload查询当前数据库。通过回显观......
  • net core中启用指定目录浏览
      builder.Services.AddDirectoryBrowser();//打开日志文件目录浏览app.UseFileServer(newFileServerOptions{FileProvider=newPhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(),"logs")),RequestPath="/logs",......
  • 「漏洞复现」微商城系统 goods.php SQL注入漏洞
    0x01 免责声明请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。本次测试仅供学习使用,如若非法他用,与平台和本文作者无关,需......
  • rocky8中安装aspera软件
     001、系统[liujiaxin01@PC1~]$cat/etc/redhat-releaseRockyLinuxrelease8.10(GreenObsidian) 002、下载安装包(下载的4.2.12版本)[liujiaxin01@PC1aspera]$wget-chttps://d3gcli72yxqn2z.cloudfront.net/downloads/connect/latest/bin/ibm-aspera-connect_......
  • centos7中aspera软件的安装
     001、查看系统[liujiaxin01@PC1aspera]$cat/etc/redhat-releaseCentOSLinuxrelease7.6.1810(Core) 002、下载安装包[liujiaxin01@PC1aspera]$ls[liujiaxin01@PC1aspera]$wget-chttps://download.asperasoft.com/download/sw/connect/3.8.3/ibm-aspera-......