我有一个.Net Worker服务,它每分钟执行一次方法ReadCycle()
.
现在我必须扩展该项目,以便也可以使用API Endpoint调用该方法.
目前,我让API端点正常工作,但我无法将ReadCycle()
与API控制器中的响应链接起来.
我该怎么做呢?
Worker,其中我要调用的方法是:
private readonly ILogger<Worker> _logger;
private readonly IConfiguration Configuration;
//Stuff
public Worker(ILogger<Worker> logger, IConfiguration configuration)
{
_logger = logger;
Configuration = configuration;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
ReadCycle();
await Task.Delay(time, stoppingToken);
}
}
public void ReadCycle()
{
//do Stuff
}
API控制器
[Route("api/[controller]")]
[ApiController]
public class Controller:ControllerBase
{
[HttpPost]
public async Task<ActionResult<string>> Post(Model model)
{
//ReadCycle Call here;
Worker.ReadCycle(); //This is obviously not working
return CreatedAtAction("POST","Cycle Completed");
}
}
计划
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddHostedService<Worker>();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
//app.UseAuthorization();
app.MapControllers();
app.Run();
}