【问题标题】:.NET Web API Project as a Worker.NET Web API 项目作为工作人员
【发布时间】:2021-03-09 05:23:43
【问题描述】:

.Net 有点新,我使用的是 .Net core 5。 我有一个监听请求的 Web API 项目。 我希望这个项目偶尔调用另一个 API - 项目启动时调用一次,然后每 5 秒再调用 2 次。 看来我的 rest api 项目现在必须像 Worker 项目一样工作。 我可以做吗 ?我可以在项目启动时的某处添加计划流程吗? 谢谢!

【问题讨论】:

标签: .net asp.net-web-api backgroundworker


【解决方案1】:

使用现有的 Web APi 项目确实很容易做到这一点:

  1. 将您的工人添加为类

     public class Worker : BackgroundService  
     {  
         public Worker()
         {
             // Maybe inject services if you need something here
         }
    
         protected override async Task ExecuteAsync(CancellationToken stoppingToken)
         {
             while (!stoppingToken.IsCancellationRequested)
             {
                 await this.MakeCall();
                 await Task.Delay(1000 * 5, stoppingToken);
             }
         }
    
         private async Task MakeCall()
         {
             // Call your other service here
         }
     }
    
  2. 将您的工作人员注册为托管服务,这将使其运行。将此添加到您的初创公司的 ConfigureServices 方法中:

    services.AddHostedService<Worker>();
    

还有你的工人服务。您现在可以覆盖 BackgroundService 中的其他方法,例如在启动和关闭时执行某些操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-15
    • 2019-02-13
    • 1970-01-01
    • 2021-08-15
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    相关资源
    最近更新 更多