【问题标题】:.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 项目确实很容易做到这一点:
-
将您的工人添加为类
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
}
}
-
将您的工作人员注册为托管服务,这将使其运行。将此添加到您的初创公司的 ConfigureServices 方法中:
services.AddHostedService<Worker>();
还有你的工人服务。您现在可以覆盖 BackgroundService 中的其他方法,例如在启动和关闭时执行某些操作。