C# 返回.net核心api后如何继续执行
我有一个方法可以处理一个大文件以更新数据源。根据文件的大小和所需更改的复杂性,此过程可能需要很长时间才能运行 我想开始处理该文件,然后向调用者返回状态代码200,让他们知道该文件已成功上载 然后,目标是向上传该文件的用户发送一封电子邮件,让他们知道该文件已被处理,并将包括任何信息,例如由于数据验证检查失败而无法处理的单个行 我尽量不等待文件的处理C# 返回.net核心api后如何继续执行,c#,.net-core,C#,.net Core,我有一个方法可以处理一个大文件以更新数据源。根据文件的大小和所需更改的复杂性,此过程可能需要很长时间才能运行 我想开始处理该文件,然后向调用者返回状态代码200,让他们知道该文件已成功上载 然后,目标是向上传该文件的用户发送一封电子邮件,让他们知道该文件已被处理,并将包括任何信息,例如由于数据验证检查失败而无法处理的单个行 我尽量不等待文件的处理 [路由(“[controller]/[action]”) [ApiController] 公共类ReorderController:Controlle
[路由(“[controller]/[action]”)
[ApiController]
公共类ReorderController:ControllerBase
{
[HttpPost]
公共异步任务UpdateFromFile(IFormFile csv)
{
ParseCSVAsync(csv);
返回Ok();
}
专用异步任务ParseCSVAsync(IFormFile)
{
//文件处理代码
}
}
但是,当操作返回Ok状态代码时,资源将被释放,并且在处理完成之前停止执行
是否有一些.net核心生命周期可以让我在启动文件的HTTP请求之外对文件进行处理?这类问题经常被问到。你做了很多研究吗?您只需要一个单独的后台服务集来频繁运行。Web API只需保存文件,然后在某个位置写入一些数据(例如,可能是数据库表),告诉服务作业已准备就绪。下次服务运行时,它将看到新作业并对其进行处理,完成后可以发送电子邮件。或者,您也可以在ASP.NET应用程序中使用类似的功能来产生类似的效果。但是,对于API请求的基本上下文,您当然不能满足您的要求——一旦您向客户机返回值,请求总是会结束。