Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回.net核心api后如何继续执行_C#_.net Core - Fatal编程技术网

C# 返回.net核心api后如何继续执行

C# 返回.net核心api后如何继续执行,c#,.net-core,C#,.net Core,我有一个方法可以处理一个大文件以更新数据源。根据文件的大小和所需更改的复杂性,此过程可能需要很长时间才能运行 我想开始处理该文件,然后向调用者返回状态代码200,让他们知道该文件已成功上载 然后,目标是向上传该文件的用户发送一封电子邮件,让他们知道该文件已被处理,并将包括任何信息,例如由于数据验证检查失败而无法处理的单个行 我尽量不等待文件的处理 [路由(“[controller]/[action]”) [ApiController] 公共类ReorderController:Controlle

我有一个方法可以处理一个大文件以更新数据源。根据文件的大小和所需更改的复杂性,此过程可能需要很长时间才能运行

我想开始处理该文件,然后向调用者返回状态代码200,让他们知道该文件已成功上载

然后,目标是向上传该文件的用户发送一封电子邮件,让他们知道该文件已被处理,并将包括任何信息,例如由于数据验证检查失败而无法处理的单个行

我尽量不等待文件的处理

[路由(“[controller]/[action]”)
[ApiController]
公共类ReorderController:ControllerBase
{
[HttpPost]
公共异步任务UpdateFromFile(IFormFile csv)
{
ParseCSVAsync(csv);
返回Ok();
}
专用异步任务ParseCSVAsync(IFormFile)
{
//文件处理代码
}
}
但是,当操作返回Ok状态代码时,资源将被释放,并且在处理完成之前停止执行


是否有一些.net核心生命周期可以让我在启动文件的HTTP请求之外对文件进行处理?

这类问题经常被问到。你做了很多研究吗?您只需要一个单独的后台服务集来频繁运行。Web API只需保存文件,然后在某个位置写入一些数据(例如,可能是数据库表),告诉服务作业已准备就绪。下次服务运行时,它将看到新作业并对其进行处理,完成后可以发送电子邮件。或者,您也可以在ASP.NET应用程序中使用类似的功能来产生类似的效果。但是,对于API请求的基本上下文,您当然不能满足您的要求——一旦您向客户机返回值,请求总是会结束。